通过style实现Activity的界面切换
来源:互联网 发布:网络门事件 编辑:程序博客网 时间:2024/05/21 10:17
Activity的界面切换可以通过调用系统的方法,overridePendingTransition(int enterAnim, int exitAnim)来实现。
假设界面A点击后可以进入界面B,点击back键后,B界面关闭,返回到A界面。
通过xml文件可以实现动画效果,然后调用overridePendingTransition即可,第一个参数代表即将能看到的界面,第二个参数代表即将看不到得界面。这里,举例使用最常用的方式,界面自然左右滑动切换。
a:从A进入B(A消失,B出现)(文件名:可以理解为A的open动作,A消失,和B出现的动画)
activity_open_exit.xml<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="0" android:toXDelta="-100%p"android:duration="500" /><alpha android:fromAlpha="1.0" android:toAlpha="1.0"android:duration="500" /></set>
activity_open_enter.xml<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="100%p" android:toXDelta="0"android:duration="500" /><alpha android:fromAlpha="1.0" android:toAlpha="1.0"android:duration="500" /></set>
b:B界面按back键,回到A界面的过程
activity_close_enter.xml<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="-100%p" android:toXDelta="0"android:duration="500" /><alpha android:fromAlpha="1.0" android:toAlpha="1.0"android:duration="500" /></set>
activity_close_exit.xml<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><translate android:fromXDelta="0" android:toXDelta="100%p"android:duration="500" /><alpha android:fromAlpha="1.0" android:toAlpha="1.0"android:duration="500" /></set>
这样,overridePendingTransition(R.anim.activity_open_enter, R.anim.activity_anim_exit);overridePendingTransition(R.anim.activity_close_enter, R.anim.activity_close_exit);即可实现界面的切换,但是这是通过代码,每次打开一个activity都需要这样来写。我们可以通过在AndroidManifest中的activity节点中的theme来配置当前Activity打开和退出的动画效果。
这里,首先介绍一下在Android中的theme和style的区别:
风格Style是一个包含一种或多种格式化属性的集合,你可以把它应用在UI组件上。主题Theme也是一个包含一种或多种格式化属性的集合,你可以把它应用在整个应用程序(Application)中或者某个窗口(Activity)中。比如,布局文件中的TextView和Button等,我们都可以在styles.xml中找到一些属性的配置,而在themes.xml中,可以看到有这样的属性配置<item name="android:buttonStyle">@style/xxxx</item>,这表示使用了这个Theme的界面上的button会默认使用这样的style,不会使用系统默认的了。
在styles.xml中,我们可以看到这样的style,并且其中有这样的item。
<style name="Animation.Activity"> <item name="activityOpenEnterAnimation">@anim/activity_open_enter</item> <item name="activityOpenExitAnimation">@anim/activity_open_exit</item> <item name="activityCloseEnterAnimation">@anim/activity_close_enter</item> <item name="activityCloseExitAnimation">@anim/activity_close_exit</item><!—忽略其他--></style>那么,我们只要继承这个style,然后换成我们的动画效果就可以了,在activity的节点配置中,使用我们的style就可以了,但是,这里也可以使用继承themes.xml中的主题来实现,因为,主题中为我们提供了界面切换的style,<item name="android:windowAnimationStyle">@style/自己的style</item>。
通过上述方式,就实现了界面的切换,并且不用每次打开界面都调用overridePendingTransition方法,但是,如果在同一个界面中又不同的切换效果呢,那么就需要使用overridePendingTransition了。
提示:如果activity节点和overridePendingTransition都写了,App会使用代码中,就比如布局中写了,代码中也写了,会使用代码中的配置。
demo:
<style name="My.Animation.Activity" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item> <item name="android:activityOpenExitAnimation">@anim/push_left_out</item> <item name="android:activityCloseEnterAnimation">@anim/push_right_in</item> <item name="android:activityCloseExitAnimation">@anim/push_right_out</item></style>style name="AppTheme" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:windowAnimationStyle">@style/My.Animation.Activity</item>。</style>
- 通过style实现Activity的界面切换
- 实现Activity界面切换动画
- android如何通过TextView实现不同的Activity的切换
- 如何通过视图控制器UITabBarController实现界面的切换
- Activity 过度动画让界面切换实现如牛奶般润滑的切换
- Android用tabhost实现 界面切换,每个界面为一个独立的activity
- Android Activity界面切换的各种效果
- 通过手指滑动切换不同的Activity
- android 通过setContentView切换Activity的View
- 实现activity的滑动切换
- activity 全屏界面切换到非全屏界面的问题
- activity 全屏界面切换到非全屏界面的问题
- Activity的启动界面实现
- 通过ini文件实现不同语言环境的界面文字的切换
- 【从头学android】在两个Activity之间实现界面切换
- Activity实现欢迎界面并添加动画切换效果
- TabHost实现多个Activity界面间切换
- android实现activity界面切换时随机播放特效
- Objective-C(一、文件扩展名,驼峰标识法,#import与#include,OC弱语法)——iOS开发基础
- 郭台铭:考虑拆分鸿海大陆业务 3-5年登陆沪深股市
- maven 之 profile
- Prism框架(二)——Prism应用程序初始化
- CGLIB 和 JDK生成动态代理类的区别
- 通过style实现Activity的界面切换
- 高性能 CSS3 动画
- java用httpclient 4.3 实现将base64串进行文件上传
- iOS下FMDB的多线程操作(二)
- 第十五周oj刷题——Problem N: C++习题 复数类--重载运算符3+
- 苹果人气爆“表” Apple Watch袭击韩国或再下一城
- Oracle--正则表达式例子
- iOS开发~CocoaPods使用详细说明
- Java内存区域与内存溢出异常