自定义圆角透明的Dialog
2015-07-19 23:48
330 查看
自定义圆角透明的Dialog
说明
系统默认的Dialog默认是背景不透明的,有时候项目需要Dialog为圆角透明,这个时候的解决方案就是---重写Dialog
- 系统样式
- 自定义以后的样式
自定义一个Dialog,继承Dialog
package ktalk.kong.qingwei.kcornerdialog; import android.app.Dialog; import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; public class KCornerDialog extends Dialog { private static int default_width = 160; // 默认宽度 private static int default_height = 120;// 默认高度 private boolean noBackPressed = false; public KCornerDialog(Context context, View layout, int style) { this(context, default_width, default_height, layout, style); } public KCornerDialog(Context context, int width, int height, View layout, int style) { super(context, style); // 加载布局 setContentView(layout); // 设置Dialog参数 Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); params.gravity = Gravity.CENTER; window.setAttributes(params); } /** * 设置返回键 * * @param b */ public void setBackPressed(boolean b) { noBackPressed = b; } @Override public void onBackPressed() { if (!noBackPressed) { super.onBackPressed(); } } }
说明
public KCornerDialog(Context context, int width, int height, View layout, int style)
这个构造方法的最后一个参数,是一个style,需要我们自己去设定Dialog样式,我们的需求是,设置一个圆角的背景图片后,让Dialog是圆角透明的
Style
在styles.xml文件中加入样式res->values->styles.xml
<style name="KCornerDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.6</item> </style>
到这里,自定义的圆角Dialog就写完了,下面介绍下使用
自定义Dialog的使用
/** * 显示自定义圆角Dialog */ private void showCornerDialog() { Toast.makeText(this, "显示自定义圆角Dialog", Toast.LENGTH_SHORT).show(); View view = View.inflate(this, R.layout.corner_dialog_view, null); KCornerDialog kCornerDialog = new KCornerDialog(this, 0, 0, view, R.style.KCornerDialog); kCornerDialog.show(); }
最后一个参数 R.style.KCornerDialog 就是我们加入的Dialog样式
有的Dialog可能需要禁掉返回键,例如有时候需要强制用户执行某些操作,思路还是一样,在自定义的Dialog下控制onBackPressed就行了,这里已经写好了
// 禁用返回键 kCornerDialog.setBackPressed(true);
// 开放返回键 kCornerDialog.setBackPressed(false);
Dialog里面的布局实现就自行发挥把
相关文章推荐
- UVA10010使用数组和一个for循环控制前进路径方向不变
- 统计APK中方法数量
- 今天装gocoed 出现了%path没有设置,不能进行
- 自定义圆角透明的Dialog
- wpa_cli与wpa_supplicant的交互命令
- MapReduce源码解读系列之——作业如何提交到JobTracker
- MySQL安装后无法登录——Access denied for user 'root'
- win8.1下安装ubuntu 14.0 4LTS
- 什麼是DiSEqC
- CentOS7下安装PostgresSQL9.4.4
- Caffe + Ubuntu 15.04 + CUDA 7.0 安装以及配置
- Caffe + Ubuntu 15.04 + CUDA 7.0 安装以及配置
- 我的BIOS之行(3)-遍历pci设备(1)io访问
- DVB-S相关术语说明
- 算法导论—广度优先算法
- 2015第29周日
- hdu 5038 (2014北京网络赛G 排序水题)
- wpa_cli 连接 wifi
- 13/18V系列中频切换开关原理及应用方式
- 游戏主循环FPS