1、activity应用退出进入动画
简单的方法是:将应用动画的style写在application的style中。示例如下:
style.xml
<style name="AnimationActivity" parent="@android:style/Animation.Activity">
<item name="android:windowNoTitle">true</item>
<item name="android:activityOpenEnterAnimation">@anim/push_right_in</item>
<item name="android:activityOpenExitAnimation">@anim/push_left_out</item>
<item name="android:activityCloseEnterAnimation">@anim/push_left_in</item>
<item name="android:activityCloseExitAnimation">@anim/push_right_out</item>
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
</style>
上面的style中,定义了AppTheme没有标题和进入退出动画的属性。
Manifast.xml 在Application中加入android:theme="@style/AppTheme",应用上面的style
需要注意的是,如果在activity中使用了其他的style,在application中的style将被覆盖,不能生效,所以应用此方法不能在activity中应用其他style。如果某个activity有特殊的style样式,也可以在style中定义,并在其中加入<item name="android:windowAnimationStyle">@style/AnimationActivity</item>。
另外需要四个动画文件:
push_right_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="300" />
</set>
push_left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:duration="300" />
</set>
push_left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="300" />
</set>
push_right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="0" android:toXDelta="100%p"
android:duration="300" />
</set>
2、在高版本sdk中使用高版本的主题,使dialog更加好看一点
要使用高版本的主题,项目的sdk要使用高于14的。
默认新建android项目后,在res文件夹下会有values-v11和values-v14文件夹,这里面便是定义了此项目在高于11和14的手机上运行时,使用高版本的style。
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
</style>
</resources>
<resources>
<!--
Base application theme for API 14+. This theme completely replaces
AppBaseTheme from BOTH res/values/styles.xml and
res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
</style>
</resources>
<style name="Widget.Holo.Button" parent="Widget.Button">
<item name="android:background">@android:drawable/btn_default_holo_dark</item>
<item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
<item name="android:textColor">@android:color/primary_text_holo_dark</item>
<item name="android:minHeight">48dip</item>
<item name="android:minWidth">64dip</item>
</style>
可能是因为高版本的手机分辨率较高,加了这样的设定,但是和我的程序不符。于是我在style里面加入了
<style name="myButton">
<item name="android:gravity">center</item>
</style>
同时,在application的AppTheme中加入:<item name="android:buttonStyle">@style/myButton</item>,覆盖掉v11和v14里面的按钮style,完成。