自定义DialogAlert对话框并实现对话框的复用
来源:互联网 发布:拿红包的软件 编辑:程序博客网 时间:2024/06/07 16:37
一、演示效果
二、项目布局
三、项目代码
IAlertDialogButtonListener.java
package com.example.dialogalertbyself;/** * 自定义Listener * * 用于实现Dialog的复用 * * @author xuliugen * */public interface IAlertDialogButtonListener { /** * 实现对话框的点击事件 */ public void onDialogOkButtonClick(); public void onDialogCancleButtonClick();}
MainActivity.java
package com.example.dialogalertbyself;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;/** * 对于不同的按钮实现对DialogAlert的复用 * * @author xuliugen * */public class MainActivity extends Activity { private Button button1; private Button button2; private Button button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button) this.findViewById(R.id.button1); button2 = (Button) this.findViewById(R.id.button2); button3 = (Button) this.findViewById(R.id.button3); /* * 设置三个按钮的点击事件 */ button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 将第一个按钮弹出对话框的信息,message和IAlertDialogButtonListener Util.showDialog(MainActivity.this, "我是第一个按钮", firstButtonListener); } }); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Util.showDialog(MainActivity.this, "我是第二个按钮", secondButtonListener); } }); button3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Util.showDialog(MainActivity.this, "我是第三个按钮", thirdButtonListener); } }); } private IAlertDialogButtonListener firstButtonListener = new IAlertDialogButtonListener() { @Override public void onDialogOkButtonClick() { Toast.makeText(MainActivity.this, "第一个按钮--你点的是确认", Toast.LENGTH_SHORT).show(); } @Override public void onDialogCancleButtonClick() { Toast.makeText(MainActivity.this, "第一个按钮--你点的是取消", Toast.LENGTH_SHORT).show(); } }; private IAlertDialogButtonListener secondButtonListener = new IAlertDialogButtonListener() { @Override public void onDialogOkButtonClick() { Toast.makeText(MainActivity.this, "第二个按钮--你点的是确认", Toast.LENGTH_SHORT).show(); } @Override public void onDialogCancleButtonClick() { Toast.makeText(MainActivity.this, "第二个按钮--你点的是取消", Toast.LENGTH_SHORT).show(); } }; private IAlertDialogButtonListener thirdButtonListener = new IAlertDialogButtonListener() { @Override public void onDialogOkButtonClick() { Toast.makeText(MainActivity.this, "第三个按钮--你点的是确认", Toast.LENGTH_SHORT).show(); } @Override public void onDialogCancleButtonClick() { Toast.makeText(MainActivity.this, "第三个按钮--你点的是取消", Toast.LENGTH_SHORT).show(); } };}
Util.java
package com.example.dialogalertbyself;import android.app.AlertDialog;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.TextView;public class Util { private static AlertDialog mAlertDialog; /** * * 显示用户自定义的对话框 * * @param context * @param message * @param listener */ public static void showDialog(Context context, String message, final IAlertDialogButtonListener listener) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View dialogView = inflater.inflate(R.layout.dialog_view, null); // 在创建Dialog的时候设置样式为透明的,并且要求api最低为11 AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.Theme_Transparent); // ok按钮 ImageButton btnOkButton = (ImageButton) dialogView .findViewById(R.id.btn_dialog_ok); // Cancel按钮 ImageButton btnCancelButton = (ImageButton) dialogView .findViewById(R.id.btn_dialog_cancel); // 信息 TextView txtMessageView = (TextView) dialogView .findViewById(R.id.text_dialog_message); // 设置文字内容 txtMessageView.setText(message); // 设置btnOkButton的事件 btnOkButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mAlertDialog != null) { // 关闭对话框:判断对话框是否为空 mAlertDialog.cancel(); } if (listener != null) { // 设置回调,OnClick()就是IAlertDialogButtonListener接口中的方法 listener.onDialogOkButtonClick();// 执行接口的确定方法 } } }); // 设置btnCancelButton的事件 btnCancelButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mAlertDialog != null) { mAlertDialog.cancel(); } if (listener != null) { // 设置回调,OnClick()就是IAlertDialogButtonListener接口中的方法 listener.onDialogCancleButtonClick();// 执行接口的取消方法 } } }); // 为dialog设置View builder.setView(dialogView); // 创建对话 mAlertDialog = builder.create(); // 显示对话框 mAlertDialog.show(); }}
cancel_button_icon.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/buytip_cancel_sel" android:state_pressed="true"/> <item android:drawable="@drawable/buytip_cancel"/></selector>
ok_button_icon.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/buytip_ok_sel" android:state_pressed="true"/> <item android:drawable="@drawable/buytip_ok"/></selector>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_below="@+id/button1" android:layout_marginTop="25dp" android:background="@drawable/bg" android:text="第二个按钮" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button2" android:layout_below="@+id/button2" android:layout_marginTop="22dp" android:background="@drawable/bg" android:text="第三个按钮" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:background="@drawable/bg" android:text="第一个按钮" /></RelativeLayout>
dialog_view.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/buytip_bg" android:gravity="center_horizontal" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提示" android:textColor="@color/black" android:textSize="24sp" /> <TextView android:id="@+id/text_dialog_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="40dp" android:layout_marginTop="40dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="TextView" android:textColor="@color/black" android:textSize="18sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" > <ImageButton android:id="@+id/btn_dialog_cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="20dp" android:background="@drawable/cancel_button_icon" /> <ImageButton android:id="@+id/btn_dialog_ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/ok_button_icon" /> </LinearLayout></LinearLayout>
项目源码地址:
http://yunpan.cn/cJ4JLACNyqpkT 访问密码 683e
2 0
- 自定义DialogAlert对话框并实现对话框的复用
- Android自定义对话框的实现
- 自定义对话框的实现--Android
- 各种对话框的实现(文字对话框,选择对话框,弹出输入对话框,单选,多选对话框,自定义对话框)
- 用Dialog实现自定义对话框
- 透明自定义对话框以及进度对话框的实现
- 透明自定义对话框以及进度对话框的实现
- 自定义对话框实现
- Android实现自定义对话框
- 完全自定义Android对话框AlertDialog的实现
- 实现自定义对话框的动画效果:
- android自定义实现好看的对话框
- 自定义ProgressDialog进度条对话框的实现
- android的自定义dialog对话框实现
- 自定义ProgressDialog进度条对话框的实现
- 完全自定义Android对话框AlertDialog的实现
- 如何实现自定义的dialog对话框
- Android系统对话框和自定义对话框实现
- Cisco 设备基本安全配置
- RHEL/CentOS 6.x 系统服务详解
- Android中有序广播和无序广播
- infor平台开发
- Android之PopuWindow简单学习
- 自定义DialogAlert对话框并实现对话框的复用
- 临时
- zoj 1503 One Person "The Price is Right"
- jQuery按步骤展开一个层
- org.json.JSONObject中list转json
- 临时2
- 无权图的遍历
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服
- Linux内核网桥的实现分析