美文网首页
drawable小技巧

drawable小技巧

作者: 菜鸟程序员_ | 来源:发表于2018-02-11 17:44 被阅读13次
    1. SelectDrawable 可以将不同状态的Drawable写在一个文件下
    image
    2. 使用statelistAnimator实现按下效果

    使用步骤如下

    1.在 res 中创建一个 animator 目录。
    2.在其中创建一个 xml 资源文件,就是一个 <selector/> 。
    3.在 xml 资源中使用 <selector/> 中,定义我们 View 切换状态时候的动画,其实就是一个个 <objectAnimator/>。
    4.最终将定义好的 animtor 通过 View 的 setStateListAnimator() 方法或者 android:stateListAnimator 属性,设置到 View 上。

    下面是一个例子
    首先我们新建一个btm_press_animator.xml
    代码如下

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">a
       <item android:state_pressed="true">
           <set>
    
               <objectAnimator
                   android:duration="200"
                   android:interpolator="@android:anim/accelerate_interpolator"
                   android:propertyName="scaleX"
                   android:valueFrom="1.0"
                   android:valueTo="0.85"
                   android:valueType="floatType" />
               <objectAnimator
                   android:duration="200"
                   android:interpolator="@android:anim/accelerate_interpolator"
                   android:propertyName="scaleY"
                   android:valueFrom="1.0"
                   android:valueTo="0.85"
                   android:valueType="floatType" />
           </set>
       </item>
       <item>
           <set>
    
               <objectAnimator
                   android:duration="200"
                   android:interpolator="@android:anim/accelerate_interpolator"
                   android:propertyName="scaleX"
                   android:valueFrom="0.85"
                   android:valueTo="1"
                   android:valueType="floatType" />
               <objectAnimator
                   android:duration="200"
                   android:interpolator="@android:anim/accelerate_interpolator"
                   android:propertyName="scaleY"
                   android:valueFrom="0.85"
                   android:valueTo="1"
                   android:valueType="floatType" />
           </set>
       </item>
    </selector>
    

    然后我们将其设置到button上

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.mac.myapplication.Main2Activity">
    
        <Button
            android:id="@+id/button"
            android:stateListAnimator="@animator/btn_press_animator"
            android:layout_width="200dp"
            android:background="#00f"
            android:textColor="#fff"
            android:layout_height="200dp" />
    
        <TextView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:gravity="center"
            android:background="#00f"
            android:textColor="#fff"
            android:stateListAnimator="@animator/btn_press_animator"
            android:text="Hello World" />
    </LinearLayout>
    
    

    我们点击可以查看


    QQ20180211-165801.gif
    3.使用状态可控的层级 Drawable

    我们可以根据不同的状态显示不同的层级

    代码如下


    image

    最后我们可以通过 ImageView 的 setImageLevel() 方法来控制显示的内容

    相关文章

      网友评论

          本文标题:drawable小技巧

          本文链接:https://www.haomeiwen.com/subject/qytltftx.html