android 设置全局的页面切换动画问题
2015-12-04 18:39
585 查看
这两天在看android 设置页面切换动画,看的很纠结,晕菜了
我这里有四个手机,
一加 版本 5.1.1 小米2s 版本 5.0
华为P6 版本 4.4.2 酷派版本 4.2.2
一加和小米的效果是一样的,算正常,其他两个都不太相同
根据大多数人的说法,设置动画主要有两种方式:
1,在代码里控制,页面跳转的时候去设置
在页面关闭的时候也可以设置返回时的动画
这种做法是最保守的做法,效果基本都能实现,但是页面太多,跳转的地方太多,写起来太复杂,如果只是加在某个地方还可以。
2,在清单文件里面设置主题theme,在values 下的style文件里面设置动画
样式styles里面
这种做法据说是微信的做法,但是,上面四个手机 一加 小米 酷派 都正常,但是华为手机上就是一点效果都没有,依旧还是系统默认的属性,华为手机上的微信效果却是好好的。
需要注意的一点,在设置主题的时候,有一个属性
<span style="font-size:18px;"><item name="android:windowIsTranslucent">true</item></span>
一定要注意,是否让背景图透明,建议还是不要添加,加上后,动画效果就不行了,搜了好多解决方案,还是没有解决
上面那种做法是设全局的页面切换动画,设置单独页面的切换动画也是可以的,注意我在动画那得注释,分清是什么时候的动画。
如果需要全局的动画,同时也需要某个页面有单独的动画,在我的项目里,我是仿微信,页面切换左进右出,查看图片放大缩小的形式。
我采用的做法是,加上全局的动画主题,再把显示图片的页面再加一个主题。
<activity android:name=".ImagePagerActivity" android:theme="@style/show_image_anim"/>
在这里我加上了背景透明这个属性
<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);效果还算可也以吧,有没有更好的方案,请指点我把。。。。
我这里有四个手机,
一加 版本 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);效果还算可也以吧,有没有更好的方案,请指点我把。。。。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories