首先,來張效果圖
下面寫我們實作的代碼,先定義我們的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