您的位置:首页 > 其它

windowIsTranslucent 和windowAnimationStyle冲突

2016-04-13 00:00 155 查看
摘要: windowIsTranslucent 和windowAnimationStyle冲突

今天在写 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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: