您的浏览器不支持CSS3,建议使用Firfox、Chrome等浏览器,以取得最佳显示效果

Android Animation完全总结(四)其他

Android 520℃ 0 1年前 (2016-06-03)

示例代码、思维导图可在此下载
https://github.com/jzj1993/AndroidAnimation

Dialog View Animation

给Dialog中的View设置动画,和给普通View设置动画的写法一样。

  1. Animation anim = AnimationUtils.loadAnimation(this, R.anim.animation);
  2. View dialogLayout = LayoutInflater.from(this).inflate(R.layout.dialog, null);
  3. View v = dialogLayout.findViewById(R.id.dialog_text);
  4. v.startAnimation(anim);
  5. new AlertDialog.Builder(this).setView(dialogLayout).show();

Dialog Window Animation

给整个Dialog设置动画(即Window对象)

  1. <style name="dialogAnimation" parent="@android:style/Animation.Dialog">
  2. <item name="android:windowEnterAnimation">@anim/anim_in</item>
  3. <item name="android:windowExitAnimation">@anim/anim_out</item>
  4. </style>
  1. Dialog dialog = new AlertDialog.Builder(this)
  2. .setMessage("Message")
  3. .setPositiveButton("OK", null)
  4. .create();
  5. dialog.getWindow().setWindowAnimations(R.style.dialogAnimation);
  6. dialog.show();

PopupWindow Animation

XML中的定义和Dialog相同

  1. <style name="dialogAnimation" parent="@android:style/Animation.Dialog">
  2. <item name="android:windowEnterAnimation">@anim/anim_in</item>
  3. <item name="android:windowExitAnimation">@anim/anim_out</item>
  4. </style>

Java代码中设置动画

  1. mPopupWindow.setAnimationStyle(R.style.dialogAnimation);

Activity Animation From XML

给Activity页面跳转设置动画

  1. <!-- 1.定义Activity动画 -->
  2. <style name="activityAnimation" parent="@android:style/Animation.Activity">
  3. <item name="android:windowEnterAnimation">@null</item>
  4. <item name="android:windowExitAnimation">@null</item>
  5. <!-- 新Activity启动时,Enter动画 -->
  6. <item name="android:activityOpenEnterAnimation">@anim/anim_in</item>
  7. <!-- 新Activity启动时,原有Activity的Exit动画 -->
  8. <item name="android:activityOpenExitAnimation">@anim/stay</item>
  9. <!-- 新Activity退出时,原有Activity的Enter动画 -->
  10. <item name="android:activityCloseEnterAnimation">@anim/stay</item>
  11. <!-- 新Activity退出时,Exit动画 -->
  12. <item name="android:activityCloseExitAnimation">@anim/anim_out</item>
  13. </style>
  1. <!-- 2. AppTheme中引用Activity动画 -->
  2. <style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar">
  3. <item name="android:windowAnimationStyle">@style/activityAnimation</item>
  4. </style>
  1. <!-- 3. Manifest中的Application或Activity标签中,指定theme为AppTheme -->
  2. <application
  3. android:theme="@style/AppTheme">

注意:

  • 如果Activity的launchMode设置为SingleInstance,可能会导致动画失效
  • 部分手机需要在设置中开启显示全部动画。
  • 某些手机由于定制了ROM,通过XML自定义Activity切换动画无效,只能用Java实现。

Activity Animation From Java

  1. startActivity(new Intent(this, NewActivity.class));
  2. overridePendingTransition(R.anim.anim_in, R.anim.anim_out); // 设置为0则表示没有动画

在部分机型中,设置为0表示不显示动画可能没效果,可以定义一个没有实际执行效果的动画代替:
res/anim/stay.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <alpha
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:duration="1000"
  5. android:fromAlpha="1.0"
  6. android:toAlpha="1.0" />
来自为知笔记(Wiz)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

0

暂无评论

评论前:需填写以下信息,或 登录

用户登录

忘记密码?