Android 自定义Dialog工具类
由于项目的需要,系统的弹出框已经不能满足我们的需求,我们需要各式各样的弹出框,这时就需要我们去自定义弹出框了。
新建布局文件 dialog_layout.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:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:background="@drawable/shape_linearlayout"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:gravity="center_vertical"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_dialog_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:text="TextView" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="1dp" >
<Button
android:id="@+id/btn_dialog_go"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:background="@drawable/linearlayout"
android:text="确定"
android:textColor="@color/blue" />
<View
android:id="@+id/dialog_bg"
android:layout_width="1dp"
android:layout_height="40dp"
android:background="@color/line" />
<Button
android:id="@+id/btn_dialog_add"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:background="@drawable/linearlayout"
android:text="取消"
android:textColor="@color/blue" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
新建java类DialogUtil.java
public class DialogUtil {
private static DialogUtil dialogUtil;
private Dialog dialog;
private TextView message;
private Button firstBtn;
private Button secondBtn;
private onButtnClickListener buttnClickListener;
public static DialogUtil getDialogInstance(Context context) {
if (null == dialogUtil) {
dialogUtil = new DialogUtil(context);
}
return dialogUtil;
}
private DialogUtil(Context context) {
initDialog(context);
}
public void setMessage(String message) {
if (null != message && !message.equals("")) {
this.message.setText(message);
}
}
private void initDialog(Context context) {
dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog_layout);
dialog.setCanceledOnTouchOutside(false);
Window window = dialog.getWindow();
dialog.setCanceledOnTouchOutside(true);
WindowManager.LayoutParams params = window.getAttributes();
params.width = ScreenUtils.getScreenWidth(context)
- ScreenUtils.getScreenWidth(context) / 4;
params.height = LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.CENTER;
window.setAttributes(params);
window.setWindowAnimations(R.style.displayStyle);
message = (TextView) dialog.findViewById(R.id.txt_dialog_message);
firstBtn = (Button) dialog.findViewById(R.id.btn_dialog_go);
secondBtn = (Button) dialog.findViewById(R.id.btn_dialog_add);
firstBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (null != buttnClickListener)
buttnClickListener.onFirstBtnClick(v);
}
});
secondBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (null != buttnClickListener)
buttnClickListener.onSecondBtnClick(v);
}
});
}
public void showDialog() {
if (dialog != null && !dialog.isShowing()) {
dialog.show();
}
}
public void dissmissDialog() {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
}
public void setOnButtnClickListener(onButtnClickListener buttnClickListener) {
this.buttnClickListener = buttnClickListener;
}
public interface onButtnClickListener {
public void onFirstBtnClick(View v);
public void onSecondBtnClick(View v);
}
}
dialog工具类采用的是单列的模式,调用的流程是
1、先获取对象
DialogUtil.getDialogInstance(context);
2、设置文本信息
setMessage(String message);
3、设置按钮的单机事件
setOnButtnClickListener(onButtnClickListener buttnClickListener);
4、显示dialog
showDialog();
至此自定义弹出框就完成了
Android 自定义Dialog工具类的更多相关文章
- (转载)实例详解Android快速开发工具类总结
实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...
- Android 软件管理工具类Utils
Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...
- Android自定义 Dialog 对话框
Android自定义Dialoghttp://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html Android使用自定义AlertDialo ...
- 一个使用命令行编译Android项目的工具类
一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...
- Android 自定义Dialog类,并在Activity中实现按钮监听。
实际开发中,经常会用到Dialog,比如退出时候会弹出是否退出,或者还有一些编辑框也会用Dialog实现,效果图如下: 开发中遇到的问题无非在于如果在Activity中监听这个Dialog中实现的 ...
- Android—自定义Dialog
在 Android 日常的开发中,Dialog 使用是比较广泛的.无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框. 而我们去看一下原生的对话框,虽然随着 ...
- Android自定义Dialog
Android开发过程中,常常会遇到一些需求场景——在界面上弹出一个弹框,对用户进行提醒并让用户进行某些选择性的操作, 如退出登录时的弹窗,让用户选择“退出”还是“取消”等操作. Android系统提 ...
- android 开发 常用工具类
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基本都会有一大批的辅 ...
- Android颜色转换工具类ColorUtil
项目中需要根据ScrollView的滚动距离来动态设置Topbar的背景透明度,网上有类似的开源库FadingActionBar,使用的是ActionBar做的.而我的项目中并没有使用ActionBa ...
随机推荐
- ASP.NET MVC- Upload File的例子
上传文件是一项基本功能,一定要了解的.先来看一下使用ASP.NET MVC实现简单的上传. 一.简单的例子 Controller的例子 public ActionResult UploadDemo() ...
- POJ2503——Babelfish
Description You have just moved from Waterloo to a big city. The people here speak an incomprehensib ...
- 最基本的Unix系统操作命令
基本知识点: OSX 采用的Unix文件系统,所有文件都挂在跟目录 / 下面,所以不在要有Windows 下的盘符概念. 你在桌面上看到的硬盘都挂在 /Volumes 下. 比如接上个叫做 USBHD ...
- GetSafeHwnd()函数解释[转]
当我们想得到一个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数,通过下面的例子来看其理由: CWnd *pwnd = FindWindow(“ ...
- VS 2010下单元测试
1.创建单元测试项目 2.创建完成后,新建项目会自动添加“Microsoft.VisualStudio.QualityTools.UnitTestFramework”的引用,该引用用于单元 ...
- C#利用SharpZipLib解压或压缩文件夹实例操作
最近要做一个项目涉及到C#中压缩与解压缩的问题的解决方法,大家分享. 这里主要解决文件夹包含文件夹的解压缩问题. )下载SharpZipLib.dll,在http://www.icsharpcode. ...
- 查看sid
查看用户sid: whoami /user 查看系统sid: 使用PSTools工具中的 psgetsid.exe命令查看
- JDBC-ODBC桥乱码问题解决方案
按照网上提供的ODBC连接数据库的相关资料编写代码,成功编译后运行发现,非中文字段显示正确,而中文字段却是每个汉字以?显示.关于这方面的错误baidu或google下可以找到很多解答方案,我也尝试过其 ...
- (高精度运算4.7.27)UVA 10494 If We Were a Child Again(大数除法&&大数取余)
package com.njupt.acm; import java.math.BigInteger; import java.util.Scanner; public class UVA_10494 ...
- oc-30-堆栈
/** 操作引用计数器的方式:每个对象内部(对象的堆内存里面)都有一个引用计数器变量,表示对象被引用的次数. 1:retainCount:获得对象的引用计数器的值 2:retain:能够让对象的计数器 ...