一:如从底部向上移动显示,向底部向下移动退出的Dialog动画效果
style文件:
<!-- 底部dialog动画设置--> <style name="BottomDialogAnimation" parent="@android:style/Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/push_up_in</item> <item name="@android:windowExitAnimation">@anim/push_down_out</item> </style> <!-- 底部对话框属性控制 --> <style name="BottomDialogStyle" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <!-- 边框 --> <item name="android:windowIsFloating">true</item> <!-- 是否悬浮在activity上 --> <item name="android:windowIsTranslucent">true</item> <!-- 半透明 --> <item name="android:windowNoTitle">true</item> <!-- 无标题 --> <item name="android:background">@android:color/transparent</item> <!-- 背景透明 --> <item name="android:windowBackground">@android:color/transparent</item> <!-- 窗口背景透明 --> <item name="android:backgroundDimEnabled">true</item> <!-- 背景模糊 默认true,设置false之后背景昏暗效果消失 --> <item name="android:windowAnimationStyle">@style/BottomDialogAnimation</item> <!-- 显示和消失的动画效果 --> <item name="android:colorBackgroundCacheHint">@null</item><!-- 背景缓存颜色 --> </style>
还可以使用属性<item name="android:backgroundDimAmount">0.6</item>控制背景模糊度!
软键盘自动弹出问题:
activity可以通过manifest.xml文件配置
android:windowSoftInputMode="stateVisible"属性,才能自动显示软键盘!
但是,Dialog显示时,自动显示软键盘需要设置:
mDialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
代码中使用:
然后可以控制dialog的宽度:Dialog mDialog = new Dialog(context, R.style.BottomDialogStyle);
WindowManager.LayoutParams lParams = mDialog.getWindow().getAttributes(); lParams.width = AppUtils.getScreenWidth(context)/3 * 2; mDialog.onWindowAttributesChanged(lParams); mDialog.setCancelable(true); mDialog.setCanceledOnTouchOutside(true); mDialog.show();
二:Activity进入和退出的动画效果
<1>通过在AndroidManifest.xml文件中设置activity或者application的theme属性设置动画
注意:如果在activity中设置,需要同时设置当前activity和需要启动的activity的theme属性。
style文件:
备注说明:<!-- Activity进入和退出动画 --> <style name="CustomActivityAnimationStyle" parent="android:Theme.Light.NoTitleBar"> <item name="@android:activityOpenEnterAnimation">@anim/slide_in_from_right</item> <item name="@android:activityOpenExitAnimation">@anim/slide_stay_anim</item> <item name="@android:activityCloseEnterAnimation">@anim/slide_stay_anim</item> <item name="@android:activityCloseExitAnimation">@anim/slide_out_to_right</item> </style> <style name="MyActivityAnimTheme" parent="android:Theme.Light.NoTitleBar"> <item name="@android:windowAnimationStyle">@style/CustomActivityAnimationStyle</item> </style>
activityOpenEnterAnimation表示:第二个Activity进入时的动画(上例中为:从右侧进入)
activityOpenExitAnimation表示:第一个Activity即当前Activity退出时的动画(上例中为:保持不动)
activityCloseEnterAnimation表示:第一个Activity即刚才退出的Activity进入时的动画(上例中为:保持不动)
activityCloseExitAnimation表示:第二个Activity即刚才进入的Activity退出时的动画(上例中为:向右侧退出)
附上anim文件夹对应xml文件:
sliding_in_from_right.xml:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="100%p" android:toXDelta="0" android:fromYDelta="0" android:toYDelta="0" android:interpolator="@android:anim/accelerate_interpolator" android:duration="300"> </translate>
sliding_stay_anim.xml:
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0" android:toXDelta="0" android:fromYDelta="0" android:toYDelta="0" android:interpolator="@android:anim/linear_interpolator" android:duration="500"> </translate>
然后在AndroidManifest.xml文件对应activity中设置theme属性即可!
<2>通过Activity中的overridePendingTransition(int enterAnim, int exitAnim)方法设置动画
官方解释:
Call immediately after one of the flavors of
startActivity(Intent)
orfinish
to specify an explicit transition animation to perform next.Parameters:
- enterAnim A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.
- exitAnim A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation.
缺陷:finish时,界面点击返回按钮可以执行动画,但是通过返回键不能执行动画,需要设置监听,手动finish。
附件(各种动画参考案例):http://download.csdn.net/detail/wenbitianxiafeng/7864541
三:Activity依据手势向右滑动finish动画
参考附件地址:http://download.csdn.net/detail/wenbitianxiafeng/7882373
四:Android 5.0 Lollipop中新的Activity过渡效果介绍
使用Lollipop中最新的共享元素过渡动画作为两个activity的过渡动画。
请注意这时你的项目的最高支持版本(同时编译项目使用的最低版本)至少为Android API 21。
这个动画在低于Lollipop版本的系统中会被忽略从而不执行。 不幸的是,由于性能上的原因,AppCompat兼容包没有为这些动画提供完全的向下兼容。
参考博客地址: