android【基础】 style标签应用与activity间的淡入淡出切换

比如定义一个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>

动效完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值