高仿App--元贝驾考(二)Dialog工具类
来源:互联网 发布:php服务器配置 编辑:程序博客网 时间:2024/05/28 23:21
public class BaseDialog extends Dialog{ private Context context; private Window dialogWindow; private WindowManager.LayoutParams dialogLayoutParams; public BaseDialog(@NonNull Context context){ super(context); this.context = context; init(); } public BaseDialog(@NonNull Context context, @StyleRes int themeResId) { super(context, themeResId); this.context = context; init(); } private void init(){ dialogWindow = this.getWindow(); dialogLayoutParams = dialogWindow.getAttributes(); setCanceledOnTouchOutside(true);//设置点击Dialog外部任意区域关闭Dialog } public void setGravity(int gravity){ dialogWindow.setGravity(gravity); } public Window getDialogWindow(){ return dialogWindow; } public WindowManager.LayoutParams getDialogLayoutParams(){ return dialogLayoutParams; }}
/** * dialog工具类 */public class DialogUtils { private Context context; private BaseDialog baseDialog; private WindowManager.LayoutParams layoutParams; public DialogUtils(Context context){ this.context = context; baseDialog = new BaseDialog(context, R.style.NoTitleDialog); layoutParams = baseDialog.getDialogLayoutParams(); } public DialogUtils setContentView(View view){ baseDialog.setContentView(view); layoutParams = baseDialog.getDialogLayoutParams(); layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT; baseDialog.getDialogWindow().setAttributes(layoutParams); return this; } public DialogUtils setContentViewSize(double width, double height){ if(width != 0){ layoutParams.width = (int) width; } if(height != 0){ layoutParams.height = (int) height; } baseDialog.getDialogWindow().setAttributes(layoutParams); return this; }/**
* 为Dialog设置显示位置的时候为什么要先设置其显示位置为左上角呢?
* 因为diaolog的默认显示位置为屏幕的正中央(center),而我们并不知道其当前的XY,所以XY点还是
* 从屏幕的左上角开始计算比较好
*/
public DialogUtils setXY(int x, int y){ layoutParams.gravity = Gravity.LEFT | Gravity.TOP; layoutParams.x = x; layoutParams.y = y; baseDialog.getDialogWindow().setAttributes(layoutParams); return this; } public DialogUtils setGravity(int gravity){ baseDialog.setGravity(gravity); return this; } public void show(){ baseDialog.show(); } public BaseDialog getBaseDialog(){ return baseDialog; }}
调用实例
private View tipExitView; private TextView tipExitCancelTv; private TextView tipExitOkTv; private DialogUtils dialogUtils; @Override public void onBackPressed() {// super.onBackPressed(); tipExitView = View.inflate(this,R.layout.view_back_tip,null); tipExitCancelTv = (TextView) tipExitView.findViewById(R.id.dialog_exitTip_cancel); tipExitOkTv = (TextView) tipExitView.findViewById(R.id.dialog_exitTip_ok); tipExitCancelTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialogUtils.getBaseDialog().cancel(); } }); tipExitOkTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { System.exit(0); } }); dialogUtils = new DialogUtils(this); dialogUtils.show(); dialogUtils.setContentView(tipExitView); dialogUtils.setContentViewSize(BaseApplication.WINDOW_WIDTH * 0.8,0); }
下面是两种常用Style,一种是透明,一种半透明
<!--无标题透明dialog--><style name="NoTitleTransparentDialog"> <item name="android:windowTitleStyle">@null</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item></style><!--无标题不透明--><style name="NoTitleDialog"> <item name="android:windowTitleStyle">@null</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item></style>
阅读全文
0 0
- 高仿App--元贝驾考(二)Dialog工具类
- 高仿APP——元贝驾考(一)FragmentUtils
- iOS开发常用(三方类库,工具,高仿APP,技术网站 ,快捷键 ,技术干货)
- Dialog 之高仿IOS
- 高仿APP——元贝驾考
- 高仿- 萌聚 app。
- 高仿IOS---Dialog(中间式)
- 高仿IOS---Dialog(底部式)
- Android 高仿IOS底部Dialog对话框。
- 酷狗app高仿系列
- swift -高仿单糖app
- iOS 高仿<爱鲜蜂>APP
- 高仿APP——元贝驾考(三)滑动关闭Activity
- 高仿APP——元贝驾考(三)ListView多ItemView
- 仿QQ空间的一款APP(二)
- iOS 高仿《掌上生活》app 动画
- iOS 高仿《掌上生活》app 动画
- android开发之高仿中国建设银行App
- 我的C程序设计语言学习日记#01
- keras/构建卷积神经网络识别mnist
- 561. Array Partition I
- [bzoj2199][Usaco2011 Jan]奶牛议会 2-sat
- 数据类型和类型转换
- 高仿App--元贝驾考(二)Dialog工具类
- C++10进制转16进制
- Maven入门指南③:坐标和依赖
- linux通过关键字查找
- linux 和window 双系统下无法显示win引导
- 启动tomcat成功,访问项目时tomcat报错 Unresolved compilation problem
- 如何转载别人的csdn博客
- 五个小案例带你学习火热的Vue.js
- EPC编码之设备唯一标识MN