华为手机设置Activity进出动画无效,及进出动画使用
程序员文章站
2022-05-03 10:54:27
...
先说说我的经历:
本来这个Activity进出动画是个很简单的东西,我就在anim创建了translate_in.xml和translate_out.xml两个动画文件,style.xml中设置了以下代码:
translate_in.xml中:
从下到上,300毫秒;
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="100%p"
android:toYDelta="0%p" />
</set>
translate_out.xml中:
从下到上,300毫秒;
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="0%p"
android:toYDelta="100%p" />
</set>
style.xml中:
<!--ActivityTheme-->
<style name="ActivityInOutTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--不设置窗口透明,进入动画会现有个黑屏的过程-->
<item name="android:windowIsTranslucent">true</item>
<!--设置窗口的动画样式-->
<item name="android:windowAnimationStyle">@style/InOutAnim</item>
</style>
<style name="InOutAnim" parent="@android:style/Animation.Activity">
<!--打开时新Activity动画方式-->
<item name="android:activityOpenEnterAnimation">@anim/tranlate_in</item>
<!--打开时旧Activity动画方式-->
<item name="android:activityOpenExitAnimation">@anim/tranlate_out</item>
<!--关闭时新Activity动画方式-->
<item name="android:activityCloseEnterAnimation">@anim/tranlate_in</item>
<!--关闭时旧Activity动画方式-->
<item name="android:activityCloseExitAnimation">@anim/tranlateout</item>
</style>
AndroidManifest.xml中:
<activity
android:name=".TranslateActivity"
android:theme="@style/ActivityInOutTheme" />
案例来说这样就结束了,在华为手机上运行,没有任何效果,一脸懵,找寻无果后,换了小米,三星手机,
出现了另一个问题:有进入动画,没有退出动画;
就目前而言,很多厂商都默认了Activity的动画是从右向左进入,从左向右退出,所以覆盖了咱们设置的动画,索性就直接使用硬代码设置,以下是解决方案;
解决方案:
在Activity.class中通过硬代码设置动画:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置进入动画
overridePendingTransition(R.anim.translate_in, R.anim.translate_out);
}
// 重新finish方法
@Override
public void finish() {
super.finish();
// 设置退出动画
overridePendingTransition(R.anim.translate_in, R.anim.translate_out);
}
当然也是需要将主题设置成透明,否则动画执行前会有黑屏的情况!到此为止,就可以了
上一篇: sql去重、or、in、and、groupby的使用
下一篇: QT属性动画