popwindow详解
来源:互联网 发布:unity3d vector2 编辑:程序博客网 时间:2024/06/05 08:48
我上一篇文章讲解截安卓动画的最基本的东西,而怎么实现它们是要一个载体的。我这篇文章讲的就是其中一中实现方 式:popwindow.
popwindow直译过来就是突然出现的弹框,比如我们在任何一款app当中基本都有个头像,你点击它就会出现个弹框让你选择是拍照还是从系统中选择照片(这个内容我会在稍后的文章中详细讲解),而这个弹框就是popWindow了。
一.创建popwindow。
View popView = View.inflate(this, R.layout.popowindow_photo, null); popupWindow = new PopupWindow(popView, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); popupWindow.setAnimationStyle(R.style.PopupAnimation); // 设置弹出动画 ColorDrawable colorDrawable = new ColorDrawable(getResources() .getColor(R.color.transparent)); popupWindow.setBackgroundDrawable(colorDrawable);// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框 // popupWindow.setBackgroundDrawable(new BitmapDrawable( // getApplicationContext().getResources(), Bitmap.createBitmap(1, // 1, Bitmap.Config.ARGB_8888))); popupWindow.setFocusable(true);// 设置PopupWindow可获得焦点 popupWindow.setOutsideTouchable(true);// PopupWindow以外的区域是否可点击,点击后是否会消失。 cancle = (Button) popView.findViewById(R.id.btn_cancle); cancle.setOnClickListener(this); photo = (TextView) popView.findViewById(R.id.photo_ing); photo.setOnClickListener(this); look = (TextView) popView.findViewById(R.id.photo_look); look.setOnClickListener(this); // popupWindow消失时监听 popupWindow.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { backgroundAlpaha(UserActivity.this, 1.0f); } });
R.layout.popowindow_photo是你显示给用户看的pipwindow界面。
R.style.PopupAnimation弹出的动画效果,在moudle的res/values/style.xml中创建<!-- popwindow的样式 --> <style name="PopupAnimation" parent="android:Animation"> <item name="android:windowEnterAnimation">@anim/popup_enter</item> <item name="android:windowExitAnimation">@anim/popup_exit</item> </style>@anim/popup_enter就是我上篇文章提到的动画效果其中的一种。
android:windowEnterAnimation代表popWindow出现时的动画,android:windowExitAnimation代表popWindow消失时的动画。
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <scale android:duration="300" android:fromXScale="0.6" android:fromYScale="0.6" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.0" android:toYScale="1.0" /> <alpha android:duration="300" android:fromAlpha="0.0" android:interpolator="@android:anim/decelerate_interpolator" android:toAlpha="1.0" /></set>popupWindow.setOnDismissListener(new OnDismissListener()这个是一个监听popWindow消失时事件,就是popWindow消失时改做啥!backgroundAlpaha(UserActivity.this, 1.0f)即/** * 设置添加屏幕的背景透明度 */ public void backgroundAlpaha(Activity context, float bgAlpha) { WindowManager.LayoutParams lp = context.getWindow().getAttributes(); lp.alpha = bgAlpha; context.getWindow() .addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); context.getWindow().setAttributes(lp); }我们都知道任何弹框的出现背景都会变暗,凸显dialog的“闪亮登场”,popWindow也是一样的,我在他出现的时候将它设成正常背景alpha(透明度)的一半,等它消失的时候在设回来。
二.popWindow的显示
/** * popwindow显示 */ private void popWindow() { View rootView = findViewById(R.id.useractivity); // 设置当前根目录 DisplayMetrics dm = getResources().getDisplayMetrics(); int y = dm.heightPixels * 1 / 12; //相对位移,popwindow出现在距离底部整个屏幕1/12距离 popupWindow.showAtLocation(rootView, Gravity.BOTTOM, 0, y); // popupWindow.update();//更新后显示,比如做了长宽缩小放大的处理 backgroundAlpaha(this, 0.5f);}
阅读全文
0 0
- popwindow详解
- PopWindow使用方法详解
- POPwindow
- popwindow
- popwindow
- PopWindow
- popwindow
- popwindow
- PopWindow
- popwindow
- popwindow
- popwindow
- popwindow 大全
- PopWindow用法
- Popwindow封装
- 30-popwindow
- 自定义 Popwindow
- 自定义popWindow
- HID 报告描述
- ES6 继承、多态简单demo
- Tomcat+Nginx+Redis的跨域Session共享---跨域
- Ubuntu16.04挂载windows的NTFS文件系统时错误的解决方法
- git学习
- popwindow详解
- JAVA 使用Dom4j 解析XML
- Docker教程(推荐)
- 解决Eclipse 和 MyEclipse控制台有更新时自动弹出设置
- 装饰器模式(Decorator)
- 记Java中的split()函数的用法
- 支付宝小程序审核与发布
- Windows下Nginx的启动、停止等命令
- NPM 国内被墙的解决方法