比如定义一个button,其不同的状态下用到了一些不同的按钮状态的图片,
在drawable目录下定义一个button各种状态时的样式,button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_normal">
</item>
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_normal_disable">
</item>
</selector>
包含此button的布局文件中:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/ButtonStyle"
android:text="button"/>
这里用到了style属性。假如直接写
style="@drawable/button"
时,是不能显示出自定义效果的。
此时,需要在values目录下,新建attrs.xml。在其中定义:
<resources>
............
<style name="ButtonStyle" >
<item name="android:background">@drawable/button</item>
</style>
............
</resources>
注意item name=”android:background”这里各个状态主要是改变其背景色,所以这里写的name=”android:background”。在item标签中加载drawable目录下的button.xml文件。这里
<style name="ListViewStyle" parent="@android:style/Widget.Holo.ListView">
<item name="android:listSelector">@drawable/XXX</item>
<item name="android:background">@color/XXX</item>
<item name="android:divider">@drawable/XXX</item>
</style
与此有关的acitivity切换效果的实现:
由于切换效果与动画有关,所以在res文件下建立anim文件夹,里面放两个文件
fade_in.xml:
<?xml version="1.0" encoding="utf-8" ?>
<!--alpha 渐变透明度动画效果
scale 渐变尺寸伸缩动画效果
translate 画面转换位置移动动画效果
rotate 画面转移旋转动画效果-->
<!--Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),
decelerated(减速),repeated(重复),bounced(弹跳)等。-->
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toAlpha="1.0"/>
<!--AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速-->
fade_out.xml
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0"/>
这两个是动画资源,实现淡入淡出的效果
接下来写style,在values文件下的styles.xml中,编写:
<!--activity theme 主题切换动画淡入淡出-->
<style name="Anim_fade" parent="android:Theme.NoTitleBar">
<item name="android:windowAnimationStyle">@style/fade</item>
</style>
<!--activity theme 主题切换动画淡入淡出-->
<style name="fade" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/fade_in</item>
<item name="android:activityOpenExitAnimation">@anim/fade_out</item>
<item name="android:activityCloseEnterAnimation">@anim/fade_in</item>
<item name="android:activityCloseExitAnimation">@anim/fade_out</item>
</style>
最后一步在AndroidManifest.xml中的Activity的声明上加入android:theme=”@style/Anim_fade”
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@android:style/Theme.NoTitleBar" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/Anim_fade" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".LoginActivity"
android:label="@string/title_activity_login"
android:theme="@style/Anim_fade">
</activity>
</application>
动效完成。