美文网首页
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