PopWindow 添加背景以及设置背景和popwindow进入进出动画
来源:互联网 发布:小松菜奈穿衣 知乎 编辑:程序博客网 时间:2024/05/16 15:46
今天又用到了PopWindow,所以决定对Popwindow做个总结,首先看创建PopWindow相关代码
class CityPopupWindow extends PopupWindow { public CityPopupWindow(View view, int width, int height) { super(view, width, height); } @Override public void dismiss() { //popwindow背景消失动画 view_bg.startAnimation(AnimationUtils.loadAnimation(context, R.anim.bg_out_anim)); view_bg.setVisibility(View.GONE); super.dismiss(); } }
其中view_bg是整体背景,就是在Activity的layout中加了一个遮罩层,代码如下
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" ><LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background" android:orientation="vertical"> <include android:id="@+id/action_bar" layout="@layout/include_back_commit" android:layout_width="match_parent" android:layout_height="@dimen/view_height" /> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/layout_weekview" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ></LinearLayout> <TextView android:id="@+id/tv_tip" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="加载中" android:textColor="@color/darkgray" android:visibility="visible" /> </FrameLayout></LinearLayout> <View android:id="@+id/sceduleview_bg" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibility="gone" android:background="@color/translucent_over_background"/></FrameLayout>
下面是初始化PopWindow的代码
public void initPopWindowView(AppointmentExt appointment) { // // 获取自定义布局文件 View dialogView = getLayoutInflater().inflate(R.layout.popwindow_scedule, null, false); cityPopwindow = new CityPopupWindow(dialogView, RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); SimpleDraweeView headicon = (SimpleDraweeView) dialogView.findViewById(R.id.sdv_headicon); TextView title = (TextView) dialogView.findViewById(R.id.tv_title); TextView content = (TextView) dialogView.findViewById(R.id.tv_content); TextView status = (TextView) dialogView.findViewById(R.id.tv_status); User user = appointment.getUser();; ImageUtils.setSimpleDrawView(headicon, user.getAvatar()); content.setText(StringUtils.subStrSensitive(appointment.getTopic().getTitle(), 28)); status.setText(TransUtils.getAppointStatus( appointment.getAppoint().getStatus())); // 设置Pop响应外部区域焦点 cityPopwindow.setOutsideTouchable(true); cityPopwindow.setBackgroundDrawable(new BitmapDrawable()); // 设置Pop入场和出场动画效果 cityPopwindow.setAnimationStyle(R.style.pop_anim); // 设置Pop响应内部区域焦点 cityPopwindow.setFocusable(true); }
然后是显示Popwindow
initPopWindowView(); view_bg.setVisibility(View.VISIBLE); view_bg.startAnimation(AnimationUtils.loadAnimation(context, R.anim.bg_in_anim)); cityPopwindow.showAtLocation(weekView, Gravity.NO_GRAVITY, (int) eventRect.left, (int) eventRect.centerY());
下面是相关的style和动画
pop出场入场style
<style name="pop_anim"> <item name="android:windowEnterAnimation">@anim/pop_in_anim</item> <item name="android:windowExitAnimation">@anim/pop_out_anim</item> </style>
pop_in_anim
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:interpolator="@android:anim/accelerate_interpolator" android:fromXScale="0%" android:fromYScale="0%" android:toXScale="100%" android:toYScale="100%" android:duration="300" /></set>
pop_out_anim
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:interpolator="@android:anim/accelerate_interpolator" android:fromXScale="100%" android:fromYScale="100%" android:toXScale="0%" android:toYScale="0%" android:duration="300" /></set>
view_bg显示动画 bg_in_anim
<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="0.0" android:toAlpha="1.0" android:startOffset="200" android:fillAfter="true" android:duration="300"/>
view_bg消失动画 bg_out_anim
<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="1.0" android:toAlpha="0.0" android:fillAfter="true" android:duration="300"/>
0 0
- PopWindow 添加背景以及设置背景和popwindow进入进出动画
- 设置popWindow背景变暗
- 设置popWindow背景变暗
- Android PopWindow弹出后,设置背景亮度
- 设置popWindow出现时,背景后面变暗
- 12.PackageManager&&Popwindow必须设置背景
- 弹出popwindow 背景变暗
- 弹出PopWindow背景变暗
- popwindow 设置动画
- popwindow设置阴影背景(其他场景也适用)
- popwindow 位置和动画
- android popWindow 弹出时背景透明度渐变
- PopWindow实现显示背景窗口变暗
- PopWindow显示activity背景变灰
- Popwindow 无背景无响应疑问解决
- android popwindow 位置和动画
- popwindow点击外部取消不了和popwindow弹出抖动动画
- POPwindow
- java中的反射
- POJ 1274 The Perfect Stall(二分匹配-hungary)
- Liquidfun的编译与运行
- Android 之 注解
- 【斜率DP】BZOJ 1911:特别行动队
- PopWindow 添加背景以及设置背景和popwindow进入进出动画
- 在Hibernate工程中如何让数据库从MYSQL换成ORACLE
- 自定义MaterialProgressBarSupport
- DruidDataSource配置 阿里数据源
- 常用编码总结
- Android OOM问题排查
- 【斜率DP】BZOJ 3675:[Apio2014]序列分割
- oracle 表锁死的解决方法
- ASCII编码表