按下时,在ViewPager上投下阴影动画

时间:2015-02-26 01:54:56

标签: android android-viewpager android-animation material-design

我希望我的ViewPager具有与材质设计主题Button相同的材质设计动画,当您按下它时,您会看到高程更改并且按钮下方会出现阴影。效果显示在材料响应视频下的材料设计指南中:http://www.google.com/design/spec/animation/responsive-interaction.html#responsive-interaction-user-input

我相信对于Button / ImageView来说,这是通过StateListAnimator完成的,但是我无法找到一种方法来为ViewPager做同样的事情,而ViewPager似乎没有按钮所具有的状态。

我尝试在自定义ViewPager上使用onInterceptTouch和onTouch,以便在按下和释放ViewPager时收听,但根据我的实验,并非所有MotionEvent都会被发送到ViewPager。

我也试过使用PageTransformer只取得了有限的成功。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

您必须编辑项目布局。将其添加到Button / View / ImageView:

android:stateListAnimator="@anim/item_elevation"

然后添加此动画(例如anim / item_elevation.xml)。假设您的初始高程为1dp:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_enabled="true"
    android:state_pressed="true">
    <objectAnimator
        android:duration="@android:integer/config_shortAnimTime"
        android:propertyName="translationZ"
        android:valueFrom="1dip"
        android:valueTo="3dip"
        android:valueType="floatType" />
</item>
<item>
    <objectAnimator
        android:duration="@android:integer/config_shortAnimTime"
        android:propertyName="translationZ"
        android:valueFrom="3dip"
        android:valueTo="1dip"
        android:valueType="floatType" />
</item>

注意:如果您想要涟漪效果添加: 机器人:?背景=&#34;机器人:selectableItemBackground&#34; (默认) 或者android:background =&#34;?selectableItemBackground&#34; (程序兼容性)