今天在写 android仿IOS 侧滑销毁的时候 需要把activity的背景设置成透明 在滑出的时候漏出 栈下面一层的activity 在AppTheme里面 设置了windowIsTranslucent 属性
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">#333333</item>
<item name="colorPrimaryDark">#333333</item>
<item name="android:windowAnimationStyle">@style/MyActivitySiwtchAnimation</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowIsTranslucent">true</item> </style>
这里之前设置过
activity 切换动画
接下来 问题来了
设置windowIsTranslucent 后android:windowAnimationStyle 失效了,不好使了
差了写资料 已解决 再次记录下
<style name="MyActivitySiwtchAnimation" parent="@android:style/Animation.Translucent">
<!--创建效果-->
<!--<item name="@android:activityOpenEnterAnimation">@anim/out_from_right</item>-->
<!--<!–上一个被覆盖效果–>-->
<!--<item name="@android:activityOpenExitAnimation">@anim/out_middle</item>-->
<!--<!–推出效果–>-->
<!--<item name="@android:activityCloseExitAnimation">@anim/out_toleft</item>-->
<!--<!–上一个还原效果–>-->
<!--<item name="@android:activityCloseEnterAnimation">@anim/out_middle2</item>-->
<item name="android:windowEnterAnimation">@anim/out_from_right</item>
<item name="android:windowExitAnimation">@anim/out_toleft</item>
</style>
1.让
android:windowAnimationStyle 继承
@android :style/Animation.Translucent
此方法 在退出actvity时候动画有效 创建的时候无效
2
<item name="android:windowEnterAnimation">@anim/out_from_right</item>
<item name="android:windowExitAnimation">@anim/out_toleft</item>
此方法有效。
不过本人是坑爹的锤子手机 在activity切换的时候 自带 一个由下到上的动画 目前的状态是 创建activity是重屏幕右下角出现 ,在其他手机上 还可以
方法二:绝对完美解决
取消
<item name="android:windowAnimationStyle">@style/MyActivitySiwtchAnimation</item>
改在 activity 和 fragment的基类里 重写
/**
* 重写 activity切换方法 消除系统自带动画
* @param intent
*/
@Override
public void startActivity(Intent intent) {
super.startActivity(intent);
overridePendingTransition(R.anim.out_from_right,android.R.anim.slide_out_right);
}
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.out_from_right,android.R.anim.slide_out_right);
}
@Override
public void startActivityForResult(Intent intent, int requestCode, @Nullable Bundle options) {
super.startActivityForResult(intent, requestCode, options);
overridePendingTransition(R.anim.out_from_right,android.R.anim.slide_out_right);
}
@Override
public void startActivityForResult(Intent intent, int requestCode) {
super.startActivityForResult(intent, requestCode);
overridePendingTransition(R.anim.out_from_right,android.R.anim.slide_out_right);
}
实现 切换动画
这里收集了一些系统动画
//实现淡入浅出的效果
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
// 由左向右滑入的效果
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);