自定义Dialog,多处方便的使用
来源:互联网 发布:淘宝店铺二楼怎么开通 编辑:程序博客网 时间:2024/05/17 00:49
开发中经常会遇到这样的问题: 自定义了一个弹出窗口,窗口上面的提示信息还有按钮的字都是固定的,换一个地方这些提示信息就不适用了.自己写了一个很简单的,每次实例化新的dialog时,只需要将文字传过去就好了.
与大家分享一下,能力有限,有问题的地方还望朋友们帮忙指正,谢谢.
首先自定义样式,两句话,相信不用多说了吧.
接下来我写了一个dialog的小背景.<!-- 正在加载对话框主题 --><style name="DialogTheme" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item></style>
然后就是正题了,注释写的应该算挺详细了,看代码吧<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="10dp" /> <solid android:color="#55000000" /></shape>
/** * 自定义dialog */public class CustomDialog extends Dialog implements View.OnClickListener { private static int default_width = 500;//宽度 private static int default_height = 400;//高度 private Button dialogOneBtn, dialogTwoBtn; private TextView titleMessage; private String title, oneBtnTitle, twoBtnTitle; private Context context; /** * 初始化dialog传过来的参数 * @tilte 本dialog的提示文字 * @oneBtnTitle dialog第一个按钮上的文字 * @twoBtnTitle dialog第二个按钮上的文字 * **/ public CustomDialog(Context context,String title, String oneBtnTitle, String twoBtnTitle) { super(context, R.style.DialogTheme); this.context = context; this.title = title; this.oneBtnTitle = oneBtnTitle; this.twoBtnTitle = twoBtnTitle; init(); } private void init(){ setContentView(R.layout.dialog_layout); titleMessage = (TextView)findViewById(R.id.titleMessage); dialogOneBtn = (Button)findViewById(R.id.dialogOneBtn); dialogTwoBtn = (Button)findViewById(R.id.dialogTwoBtn); dialogOneBtn.getBackground().setAlpha(100);//设置按钮的透明度 dialogTwoBtn.getBackground().setAlpha(100); titleMessage.setText(title); dialogOneBtn.setText(oneBtnTitle); dialogTwoBtn.setText(twoBtnTitle); dialogOneBtn.setOnClickListener(this); dialogTwoBtn.setOnClickListener(this); //设置窗口属性 Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); float density = getDensity(context); params.width = default_width; params.height = default_height; window.setAttributes(params); //设置点击dialog外部不能关闭dialog this.setCanceledOnTouchOutside(false); } /** * 获取显示密度 * **/ public float getDensity(Context context) { Resources resources = context.getResources(); DisplayMetrics dm = resources.getDisplayMetrics(); return dm.density; } private CustomDialogListener customDialogListener; public void setCustomDialogListener(CustomDialogListener customDialogListener){ this.customDialogListener = customDialogListener; } /** * 自定义接口回调dialog按钮的点击事件 * **/ public interface CustomDialogListener{ void onClick(View view); } /** * dialog的按钮点击事件 * **/ @Override public void onClick(View v) { customDialogListener.onClick(v); }
接下来是调用的activity的代码.
好了, 完成了,运行一下,看看效果如何:
1 0
- 自定义Dialog,多处方便的使用
- 自定义dialog的使用
- DialogFragment的使用(自定义Dialog )
- Dialog使用自定义的样式
- Android Dialog使用、自定义带动画的Dialog使用
- Android中的Dialog的使用以及自定义Dialog
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- Android中自定义Dialog的使用
- 使用自定义透明Dialog样式的Activity
- 使用自定义透明Dialog样式的Activity
- 自定义布局对话框的使用(Dialog)
- 自定义Dialog使用
- 使用Acitivy自定义Dialog
- 使用Dialog自定义菜单
- 自定义Dialog使用场景
- C++中的内存分布
- 《秘密》卷一:秘密-影响力的秘密
- YARN & Mesos,论集群资源管理所面临的挑战
- 基础练习 数列排序
- 关于Block块语法的那些事!
- 自定义Dialog,多处方便的使用
- Android中SharedPreference
- 09安装运行redis-trib.rb所需的环境
- 文件下载
- NSDate日期时间、NSDateFormatter日期格式类
- OpenGL边用边学------1 VS2015最简单OpenGL设置代码
- 二维码扫描
- 子矩阵的最大累加和问题
- MapKit地图使用和自定义大头针,画线,导航