您的位置:首页 > 移动开发 > Android开发

android 设置全局的页面切换动画问题

2015-12-04 18:39 585 查看
   这两天在看android 设置页面切换动画,看的很纠结,晕菜了

  我这里有四个手机,

   一加 版本  5.1.1   小米2s  版本 5.0     

   华为P6   版本    4.4.2   酷派版本   4.2.2

  一加和小米的效果是一样的,算正常,其他两个都不太相同

  根据大多数人的说法,设置动画主要有两种方式:

1,在代码里控制,页面跳转的时候去设置

<span style="font-size:18px;"> intent.setClass(MainActivity.this,NextActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.group_enter_in , R.anim.group_enter_out);</span>


在页面关闭的时候也可以设置返回时的动画

<span style="font-size:18px;">@Override
public void onBackPressed() {

this.finish();
this.overridePendingTransition(R.anim.group_back_in, R.anim.group_back_out);
super.onBackPressed();
}</span>


这种做法是最保守的做法,效果基本都能实现,但是页面太多,跳转的地方太多,写起来太复杂,如果只是加在某个地方还可以。

2,在清单文件里面设置主题theme,在values 下的style文件里面设置动画

<span style="font-size:18px;"><application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/my_theme"
></span>


样式styles里面 

<span style="font-size:18px;"><style name="my_anim" parent="@android:style/Animation.Activity" >
 <!--以当前这个页面 T 为基准   A --> T --> B  -->
<!-- T 页面出现动画 -->
<item name="android:activityOpenEnterAnimation">@anim/slide_left_in</item>
<!-- A页面退出动画-->
<item name="android:activityOpenExitAnimation">@anim/slide_right_out</item>

<!-- B 返回到 T 页面-->
<!-- T 页面出现动画-->
<item name="android:activityCloseEnterAnimation">@anim/slide_right_in</item>
<!-- B页面消失动画-->
<item name="android:activityCloseExitAnimation">@anim/slide_left_out</item>

</style>

<style name="my_theme" parent="@android:style/Theme">
<!-- window动画 -->
<item name="android:windowAnimationStyle">@style/my_anim</item>
<!-- 无标题显示-->
<item name="android:windowNoTitle">true</item>
<!-- 设置欢迎页面的背景图 -->
<item name="android:windowBackground">@drawable/start_image</item>

</style></span>


这种做法据说是微信的做法,但是,上面四个手机 一加 小米  酷派 都正常,但是华为手机上就是一点效果都没有,依旧还是系统默认的属性,华为手机上的微信效果却是好好的。

需要注意的一点,在设置主题的时候,有一个属性  

<span style="font-size:18px;"><item name="android:windowIsTranslucent">true</item></span>

一定要注意,是否让背景图透明,建议还是不要添加,加上后,动画效果就不行了,搜了好多解决方案,还是没有解决

上面那种做法是设全局的页面切换动画,设置单独页面的切换动画也是可以的,注意我在动画那得注释,分清是什么时候的动画。

如果需要全局的动画,同时也需要某个页面有单独的动画,在我的项目里,我是仿微信,页面切换左进右出,查看图片放大缩小的形式。

我采用的做法是,加上全局的动画主题,再把显示图片的页面再加一个主题。

<activity android:name=".ImagePagerActivity" android:theme="@style/show_image_anim"/>

<style name="show_image_anim" parent="@android:style/Theme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/tran_black</item>
<!-- window动画 -->
<item name="android:windowAnimationStyle">@style/image_anim</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="image_anim" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/group_enter_in</item>

<item name="android:activityCloseExitAnimation">@anim/group_back_out</item>
</style>


在这里我加上了背景透明这个属性
<item name="android:windowIsTranslucent">true</item>
因为我发现,在这里加上,可以屏蔽全局的动画,而图片页面动画可以显示出来,但是我所添加的动画
<style name="image_anim" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/group_enter_in</item>

<item name="android:activityCloseExitAnimation">@anim/group_back_out</item>
</style>

在进入图片页面第一个起作用,返回时,不同的手机效果不同
一加和小米 没有第二个动画那个效果,酷派则有动画效果很正常,华为依旧然并卵啊。。。。。

然后我只能在图片页面关闭的时候添加

overridePendingTransition(R.anim.group_back_in, R.anim.group_back_out);效果还算可也以吧,有没有更好的方案,请指点我把。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息