天天看點

自定義圓角dialog,不需要圖檔

首先,來張效果圖

自定義圓角dialog,不需要圖檔

下面寫我們實作的代碼,先定義我們的dialog布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <LinearLayout
        android:id="@+id/loading_relativeLayout"
        android:layout_width="fill_parent"
        android:layout_height="150dp"
        android:orientation="vertical"
        android:background="@drawable/white1_yuanjiao">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1">
            <TextView
                android:id="@+id/dialog_top"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center|left"
                android:layout_marginLeft="10dp"
                android:textSize="15dp"
                android:textColor="@color/black"
                android:text="通知"/>

            </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1">
            <TextView
                android:id="@+id/dialog_connect"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="left"
                android:layout_marginLeft="10dp"
                android:textSize="17dp"
                android:textColor="@color/grey"
                android:text="這裡是通知的具體内容!"/>

        </LinearLayout>
        <View
            android:layout_width="fill_parent"
            android:layout_height="1px"
            android:background="@color/gray"/>
        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"

        android:layout_weight="1">
            <TextView
                android:id="@+id/left_textview"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textSize="15dp"
                android:gravity="center"
                android:background="@drawable/dialog_ok_listener"
                android:textColor="@color/black"
                android:text="取消"/>
            <View
                android:layout_width="1px"
                android:layout_height="fill_parent"
                android:background="@color/gray"/>
            <TextView
                android:id="@+id/right_textview"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:textSize="15dp"
                android:background="@drawable/dialog_ok_listener"
                android:textColor="@color/deepskyblue"
                android:gravity="center"
                android:text="确定"/>

    </LinearLayout>


        </LinearLayout>

</LinearLayout>
           

然後定義一個drawable檔案white1_yuanjiao

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item><shape>
        <!-- 指定圓角矩形的4個圓角的半徑 -->
        <gradient android:endColor="@color/white_dark" android:startColor="@color/white_dark" />


        <corners android:topLeftRadius="10dp" android:topRightRadius="10dp"
            android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp"/>
        <!-- 指定邊框線條的寬度和顔色 -->
        <stroke android:width="4px" android:color="@color/white_dark" />
    </shape></item>

</selector>
           

然後寫我們的java代碼段

package com.example.fei.ldg.juint;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.example.fei.ldg.R;

/**
 * Created by fei on 2016/10/20.
 */
public class Dialog {

    Context context;
    android.app.AlertDialog ad;
    TextView top,connect,left,right;
    LinearLayout lll;
    public Dialog(Context context) {
        // TODO Auto-generated constructor stub
        this.context=context;
        ad=new android.app.AlertDialog.Builder(context).create();
        ad.show();
        //關鍵在下面的兩行,使用window.setContentView,替換整個對話框視窗的布局
        Window window = ad.getWindow();
        window.setContentView(R.layout.dialog);
        top=(TextView)window.findViewById(R.id.dialog_top);
        connect=(TextView)window.findViewById(R.id.dialog_connect);
        left=(TextView)window.findViewById(R.id.left_textview);
        right=(TextView)window.findViewById(R.id.right_textview);
        lll=(LinearLayout)window.findViewById(R.id.loading_relativeLayout);
    }

    public void setBackGround(Drawable drawable){
        lll.setBackground(drawable);
    }
    public void setBackGround(int rid){
        lll.setBackgroundColor(rid);
    }
    public void settop(String s){
        top.setText(s);
    }
    public void settop(int d){
        top.setText(d);
    }
    public void setTitle(String f){
        connect.setText(f);
    }
    public void setTitle(int g){
        connect.setText(g);
    }
    public void setLeftOther(String h,View.OnClickListener listener){
        left.setText(h);
        left.setOnClickListener(listener);
    }
    public void setRightOther(String h,View.OnClickListener listener){
        right.setText(h);
        right.setOnClickListener(listener);
    }
    public void dismiss() {
        ad.dismiss();
    }
    public boolean isShowing(){
        if(ad.isShowing()){
            return true;
        }
        return false;

    }
}
           

最主要的實在Mainactivity中的引用,如下:

package com.example.fei.selfdialog;

import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;


public class MainActivity extends Activity implements View.OnClickListener{
    private Dialog dialog;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    //擷取布局元件
    private void initView(){
        button=(Button)findViewById(R.id.btn);
        button.setOnClickListener(this);
    }

    //顯示dialog
    private void showdialog(String h,View.OnClickListener onClickListener){
        dialog=new Dialog(this);
        dialog.settop("系統提示");
        dialog.setTitle(h);
        dialog.setLeftOther("取消",new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismissdialog();
            }
        });
        dialog.setRightOther("确定",onClickListener);

    }



    //關閉dialog
    private void dismissdialog(){
        if(dialog.isShowing()){
            dialog.dismiss();
        }
    }


    //重寫底部按鈕方法
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK){
            showdialog("确定要退出系統嗎?",new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });

        }
        return false;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn:
                showdialog("這是點選button顯示的dialog",new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dismissdialog();
                    }
                });
                break;
        }
    }
}

           

好了,大功告成,下面附上下載下傳位址,android studio寫的。

http://download.csdn.net/detail/a179583637/9710780