Android 底部滑上滑下动画的Dialog及它的WindowManager.LayoutParams设置
来源:互联网 发布:自己动手装修diy软件 编辑:程序博客网 时间:2024/06/07 12:50
/** * @Description: * @author stone * @email aa86799@163.com */public class MyDialog extends Dialog {private Animation mShowAnim;private Animation mHideAnim;private View mMainLayout;/** * @param context */public MyDialog(Context context) {super(context);createShowAnim();createHideAnim();//mMainLayout = ...}@Overrideprotected void onCreate(Bundle savedInstanceState) {setContentView(mMainLayout);}private void createShowAnim() {mShowAnim = new TranslateAnimation(1, 0, 1, 0, 1, 1, 1, 0);mShowAnim.setDuration(500);}private void createHideAnim() {mHideAnim = new TranslateAnimation(1, 0, 1, 0, 1, 0, 1, 1);mHideAnim.setDuration(500);}@Overridepublic void show() {super.show();mMainLayout.startAnimation(mShowAnim);}private void dismissDialog() {super.dismiss();}@Overridepublic void dismiss() {mHideAnim.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {dismissDialog();}});mMainLayout.startAnimation(mHideAnim);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_MENU) {dismiss();}return super.onKeyDown(keyCode, event);}}
MyDialog myDialog = new MyDialog(context);WindowManager.LayoutParams params = myDialog.getWindow().getAttributes();params.alpha = 0.8f; //窗口透明度params.width = mScreenWidth - 80;params.height = mScreenHeight / 4;params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;myDialog.getWindow().setAttributes(params);//必须设置一个背景,否则会有系统的Dialog样式:外部白框myDialog.getWindow().setBackgroundDrawableResource(R.drawable.translate);
设置的背景必须是Drawable对象或Drawable资源的id。
res/drawable/translate.xml
<?xml version="1.0" encoding="utf-8"?><color xmlns:android="http://schemas.android.com/apk/res/android" android:color="#00000000"></color>
----------------------------------------------------------------------------------------------------------------------------------------------------------------
刚一哥们跟我说,网上流行的是这样的实现方法:
mWindow.setWindowAnimations(R.style.dialog); //添加动画
res/values/styles.xml
<style name="dialog" parent="android:Animation"> <item name="@android:windowEnterAnimation">@anim/dialog_enter</item> <item name="@android:windowExitAnimation">@anim/dialog_exit</item> </style>
dialog_enter.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromYDelta="100%p" /></set>
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:toYDelta="100%p" /></set>
0 0
- Android 底部滑上滑下动画的Dialog及它的WindowManager.LayoutParams设置
- WindowManager.LayoutParams的设置参数
- Android--WindowManager.LayoutParams(上)
- Android--WindowManager.LayoutParams(上)
- Android自定义底部带有动画的Dialog
- WindowManager.LayoutParams的使用
- WindowManager.LayoutParams的属性
- 使用WindowManager.LayoutParams的x和y设置窗体位置
- WindowManager.LayoutParams 的各种属性
- WindowManager.LayoutParams 的各种属性
- WindowManager.LayoutParams的type属性
- android.view.WindowManager.LayoutParams(上)
- android xml设置dialog的进出动画
- android xml设置dialog的进出动画
- 我的Android进阶之旅------>WindowManager.LayoutParams介绍
- WindowManager.LayoutParams(上)
- WindowManager.LayoutParams(上)
- WindowManager.LayoutParams(上)
- Android Studio 新建模拟器 启动不了
- java int与integer的区别
- [Unity]面试题整理
- Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
- JAVA使用JDBC连接MySQL数据库
- Android 底部滑上滑下动画的Dialog及它的WindowManager.LayoutParams设置
- OC之Block块语法
- oracle 导入导出
- 针对SecurityException的处理方式
- 远程注入手段 及 内存操作
- cocoapods sources
- vc++中类型转化
- 设计模式:Java 建造者模式(Builder)
- Java正则表达式的语法与示例