摘要:地址用模式重新打造一个,案例中有两种,分别是和,如果还想实现其他的通用,继承自即可。
GitHub地址
用Builder模式重新打造一个dialog,案例中有两种Builder,分别是CommonBuilder和MDBuilder,如果还想实现其他的通用dialog,继承自FRBaseDialogBuilder即可。
1、用法: 1.1、普通Dialogprivate void showCommonDialog() { final FRDialog dialog = new FRDialog.CommonBuilder(this) .setContentView(R.layout.dialog_common) .setText(R.id.dcu_tv_cancel, "否") .setText(R.id.dcu_tv_confirm, "是") .setText(R.id.dcu_tv_title, "温馨提示") .setText(R.id.dcu_tv_content, "1.文字文字我是文字文字文字我是文字文字文字我是文字! 2.文字文字文字文字文字 3.文字文字文字文字文字") .setDefaultAnim() .show(); dialog.setText(R.id.dcu_tv_confirm, "确定"); dialog.setOnClickListener(R.id.dcu_tv_cancel, new FRDialogClickListener() { @Override public boolean onDialogClick(View view) { Toast.makeText(MainActivity.this, "点击了否", Toast.LENGTH_SHORT).show(); return true; } }); dialog.setOnClickListener(R.id.dcu_tv_confirm, new FRDialogClickListener() { @Override public boolean onDialogClick(View v) { Toast.makeText(MainActivity.this, "点击了是", Toast.LENGTH_SHORT).show(); return false; } }); }1.2、MaterialDesign Dialog
private void showMDDialog() { FRDialog dialog = new FRDialog.MDBuilder(this) .setMessage("1.文字文字我是文字文字文字我是文字文字文字我是文字! 2.文字文字文字文字文字 3.文字文字文字文字文字") .setTitle("温馨提示") .setNegativeAndPositive("否", "是") .setPositiveListener(new FRDialogClickListener() { @Override public boolean onDialogClick(View view) { return true; } }).show(); }2、特殊设置:
继承所有dialog的设置,同时还可以自定义以下设置
//设置宽度全屏 dialog.setFullWidth() //设置从底部弹出 dialog.setFromBottom() //设置弹出动画 dialog.setAnimation(int anim)2018.5.24日更新
将mWidth改成mWidthOffset,不让用户设置一个具体的宽度,而是让用户去设置一个宽度比例,然后通过改变window的LayoutParams来设置dialog的宽高:
WindowManager.LayoutParams lp = window.getAttributes(); lp.width = (int) (baseBuilder.mContext.getResources().getDisplayMetrics().widthPixels * baseBuilder.mWidthOffset); lp.height = baseBuilder.mHeight; window.setAttributes(lp);
用法还是和之前一样:
dialog.setWidthOffset(0——1) 默认是0.92018.7.19日更新
新增点击dialog中非EditText区域隐藏软键盘
重写dispatchTouchEvent方法进行拦截: /** * 点击dialog中除EditText以外的区域隐藏软键盘 * * @param ev * @return */ @Override public boolean dispatchTouchEvent(@NonNull MotionEvent ev) { FRInputMethodManager.autoHideSoftInput(this, ev); return super.dispatchTouchEvent(ev); } //核心方法 public static boolean isAutoHideSoftInput(View view, MotionEvent event) { if (event.getAction() != MotionEvent.ACTION_DOWN) { return false; } if (!(view instanceof EditText)) { return false; } float x = event.getX(); float y = event.getY(); int[] location = {0, 0}; view.getLocationInWindow(location); int left = location[0]; int top = location[1]; int bottom = top + view.getHeight(); int right = left + view.getWidth(); if (left <= x && x < right && top <= y && y < bottom) { // 点击事件在EditText的区域里 return false; } return true; }
用法不变。
2018.9.11日更新新增recyclerview样式的dialogBuilder
具体功能有:
设置一个列表布局,只需要传一个adapter就好了
可以给列表添加头部和底部
可以给dialog添加头部和底部
用法:
private void showRecyclerViewDialog() { List
详细可以参照demo中的。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/14555.html
摘要:高级特效之酷炫抢红包金币下落动画最近项目需求要求做一个抢红包特效。使用动画让页面跳转更炫酷中引入了很多炫酷的动画效果,便是其中一种。 Android自定义View:一个精致的打钩小动画 一个精致的打钩动画。 Android 自定义水平进度条圆角进度 项目中实现进度条进度过程中显示圆角样式 ViewPager系列之 仿魅族应用的广告BannerView 前言 Banner广告位是APP ...
摘要:当你通过对自己技术不断打磨,一次又一次做出那些优秀产品的时候,你会发现自己不再是他人口中的码农或是屌丝,而更多被称为了大师大神,而受到大家的尊重。 showImg(https://segmentfault.com/img/bV6NaT?w=1080&h=1080);题图:黄昏时分的上海陆家嘴 最近在看《程序员的自我修养》,作者陈逸鹤,一本写给程序员的思考书,其实市面上类似题材的书也不少...
摘要:项目需求讨论自定义实现步骤及封装根据实际项目需求出发。自定义控件之带下载进度的下载按钮最近要用到一个带下载进度的按钮,各种搜索了一波,很抱歉,实在没有发现自己想要的效果,没办法只能自己尝试实现了一个了。 项目需求讨论 - Android 自定义 Dialog 实现步骤及封装 根据实际项目需求出发。因为项目中的对话框要配合整个项目的 UI 风格,所以进行自定义 Dialog 的实现步骤,...
摘要:类型检测类型检测也是一种让代码简洁的小技巧。上文中,我们只是尝试搜集了一些例子,在这些例子里,你只需做出一点小的努力,就可以让你的代码变得更好更简洁。 showImg(https://segmentfault.com/img/remote/1460000013847223); 保持代码简洁和高可读性远远要比我们想象的要难,有时候甚至比持续架构设计都要难。这里收集了一些可能对你重构代码有...
摘要:本文翻译自原作者如果有任何版权问题,请联系当你在组件中调用时,你觉得会发生什么当然,会用这条状态重新渲染组件并且更新匹配到的,然后返回元素。如果你之前使用过一些渲染器比如说,你可能知道在页面中使用超过一个渲染器是没什么问题的。 本文翻译自:How Does setState Know What to Do?原作者:Dan Abramov 如果有任何版权问题,请联系shuirong199...
阅读 1914·2021-11-23 09:51
阅读 2049·2021-09-29 09:34
阅读 3419·2021-09-22 15:50
阅读 3327·2021-09-22 15:23
阅读 2290·2019-08-30 15:55
阅读 562·2019-08-30 15:53
阅读 2956·2019-08-29 17:09
阅读 2504·2019-08-29 13:57