Android 创建指定位置和大小的PopupWindow,带进入和退出动画
2016-03-17 17:09
537 查看
效果截图:
功能代码比较简单,就不描述了,直接上代码。
MainAcvitity.java中,创建PopupWindow:
显示PopupWindow:
styles文件中:
动画文件如下,anim_left_in.xml:
anim_right_out.xml:
功能代码比较简单,就不描述了,直接上代码。
MainAcvitity.java中,创建PopupWindow:
private PopupWindow popupWindow; private void createPopupWindow(){ if(popupWindow == null){ View contentView = getLayoutInflater().inflate(R.layout.dialog_content,null); popupWindow = new PopupWindow(contentView,mContentLayout.getMeasuredWidth()/2, mContentLayout.getMeasuredHeight()); popupWindow.setFocusable(true); popupWindow.setAnimationStyle(R.style.PopupWindowStyle); popupWindow.setBackgroundDrawable(new ColorDrawable(0xffffff00)); popupWindow.setOutsideTouchable(false); popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { WindowManager.LayoutParams wlp = getWindow().getAttributes(); wlp.alpha = 1.0f; getWindow().setAttributes(wlp); } }); } }
显示PopupWindow:
mTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { createPopupWindow(); if(!popupWindow.isShowing()){ popupWindow.showAsDropDown(mTitleLayout,mContentLayout.getMeasuredWidth()/2,0); WindowManager.LayoutParams wlp = getWindow().getAttributes(); wlp.alpha = 0.7f; getWindow().setAttributes(wlp); }else{ popupWindow.dismiss(); } } });
styles文件中:
<style name="PopupWindowStyle"> <item name="android:windowEnterAnimation">@anim/anim_left_in</item> <item name="android:windowExitAnimation">@anim/anim_right_out</item> </style>
动画文件如下,anim_left_in.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:interpolator/accelerate_decelerate" > <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="400" /> <alpha android:duration="400" android:fromAlpha="0" android:toAlpha="1"/> </set>
anim_right_out.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:interpolator/accelerate_decelerate" > <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="400" /> <alpha android:duration="400" android:fromAlpha="1" android:toAlpha="0"/> </set>
相关文章推荐
- android设备信息获取
- 对多线程下载文件的理解和使用ksoap2-android调用WebService的操作步骤
- android 提前知道textview的宽度
- View的事件分发
- android textview 显示表情和文字 表情带超链接
- android 自定义组件中常用的方法
- android 自定义组件中常用的方法
- GitHub 上排名前 100 的 Android 开源库进行简单的介绍
- Android实现学生管理系统
- Android动画原理
- android上传文件到服务器
- Android自定义控件---组合控件(包括自定义属性)
- androidmanifest.xml的配置
- Android Studio 各种异常处理
- Android内存泄漏分析及实践(三)-leakCanary
- Android之简单本地音乐播放器
- Android开发历程_2(实现简单的乘法计算)
- 高德地图-Android-逆地理转换:经纬度转换成地址
- ViewPager中属性android:flipInterval="30" android:persistentDrawingCache="animation"
- 关于Android Studio 错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum