1. SelectDrawable 可以将不同状态的Drawable写在一个文件下
image2. 使用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() 方法来控制显示的内容
网友评论