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>--> 
 <!--&lt;!&ndash;上一个被覆盖效果&ndash;&gt;--> 
 <!--<item name="@android:activityOpenExitAnimation">@anim/out_middle</item>--> 
  <!--&lt;!&ndash;推出效果&ndash;&gt;--> 
 <!--<item name="@android:activityCloseExitAnimation">@anim/out_toleft</item>--> 
 <!--&lt;!&ndash;上一个还原效果&ndash;&gt;--> 
 <!--<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);





转载于:https://my.oschina.net/zhushihui/blog/658249

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值