Android activity切换动画 以及 Dialog显示动画


一:如从底部向上移动显示,向底部向下移动退出的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 mDialog = new Dialog(context, R.style.BottomDialogStyle);
然后可以控制dialog的宽度:

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) or finish 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兼容包没有为这些动画提供完全的向下兼容。

参考博客地址:

http://code.tutsplus.com/zh-hans/tutorials/introduction-to-the-new-lollipop-activity-transitions--cms-23711





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值