使用Dialog实现PopupWindow效果
16lz
2021-01-25
效果图:
Dialog的使用对Android开发者来说再经常不过了,这里分享一种使用Dialog实现PopupWindow效果的方法。
一、我们最好写一个工具类,用的时候直接调:
public class DialogUtils { public static void showDialog(Context context, final OnTextClickListener onTextClickListener) { Dialog dialog = new Dialog(context, R.style.DialogCommonStyle); Window window = dialog.getWindow(); window.setGravity(Gravity.BOTTOM);// 位置 window.setContentView(R.layout.layout_my_dialog); // 这里findViewBuId初始化控件,设置数据等等。 // 。。。 // 。。。 TextView textView = window.findViewById(R.id.textView); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onTextClickListener.onTextClick("传递数据"); } }); dialog.setCanceledOnTouchOutside(true);// 触摸外面关闭dialog WindowManager.LayoutParams lp = window.getAttributes(); lp.width = ScreenUtils.getScreenWidth(context);// dialog宽等于屏幕宽 lp.height = ScreenUtils.getScreenHeight(context) * 1/2;// dialog高为屏幕高一半 window.setAttributes(lp); window.setBackgroundDrawableResource(R.color.black);// dialog背景 window.setWindowAnimations(R.style.AnimBottom); dialog.show(); } public interface OnTextClickListener { void onTextClick(String str); } }
我们在layout_my_dialog.xml中自己布局,我这里只放了一个TextView作为例子,当然你可以放复杂的布局,例如:RecyclerView、自定义控件等等。通过定义接口来回调数据,这样做就完美的和activity分离了,而且复用性很强。
style.xml
push_bottom_in.xml
<?xml version="1.0" encoding="utf-8"?>
push_bottom_out.xml
<?xml version="1.0" encoding="utf-8"?>
更多相关文章
- “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
- Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android(安卓)记事本-Demo
- Android(安卓)GestureDetector滑动监听事件
- 2.2.1 LinearLayout(线性布局)
- Android笔记(1)——不同apk之间传递参数与数据
- 初试GreenDAO 3.2.3
- Android:配置LitePal 3.0