Я понимаю, что если я применил элемент android:stateListAnimator
on RecylerView
, вызов adapter.notifyDataSetChanged
вызовет нежелательный мерцающий эффект для определенных элементов RecylerView
(не все элементы, как ни странно)
Здесь мой элемент RecylerView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:stateListAnimator="@anim/lift_up"
android:background="@drawable/white" >
...
</LinearLayout>
@anim/lift_up
определяется как
<?xml version="1.0" encoding="utf-8"?>
<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:valueTo="8dip"
android:valueType="floatType" />
</item>
<item>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="4dip"
android:valueType="floatType" />
</item>
</selector>
и @drawable/white
определяется как
<drawable name="white">#ffffffff</drawable>
Когда я вызываю adapter.notifyDataSetChanged
, на последних 5 элементах RecylerView возникает следующий странный мерцающий эффект. (На экране есть всего 10 видимых элементов)
Эта проблема возникает только в API 21 и выше, поскольку только API 21 поддерживает android:stateListAnimator
Является ли это ошибкой, или я что-то пропустил?
Полный минимальный работоспособный код можно загрузить с https://github.com/yccheok/RecyclerViewTutorial/tree/4763879598864233a8e6544fe240c3fb34a15b73