滚动到列表视图后如何使其闪烁?

时间:2019-07-18 22:47:43

标签: android android-listview android-animation

我的应用程序中有一个列表视图,我希望能够滚动到列表视图中的某个位置,然后在该条目上执行眨眼动画以将其突出显示给用户。

我遇到的问题是,如果滚动到的条目不在列表视图的视图之外,则动画不会闪烁。我知道listview是有效的,因为它不会一次加载所有条目,因此这很可能是动画没有发生的原因。我该如何解决这个问题?

滚动到代码:

    //Changes to tab with listview
    tabLayout.getTabAt(1).select();
    //Get index to scroll to
    int selectIndex = whitelistFragment.getWhitelistTableHelper().getListViewEntryIndex(entryString);
    //If the entry exists
    if(selectIndex != -1) {
        //Scroll to index
        whitelistFragment.getWhitelistTableHelper().getListView().setSelection(selectIndex);

        //Make entry blink several times
        View entryView = helperFunctions.getViewByPosition(selectIndex, whitelistFragment.getWhitelistTableHelper().getListView());
        Animation blinkAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.blink);
        entryView.startAnimation(blinkAnimation);
    }

Blink.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="600"
        android:repeatMode="reverse"
        android:repeatCount="5"/>
</set>

1 个答案:

答案 0 :(得分:0)

ListView效率不高,您应该使用RecyclerView。它具有方法scrollToPosition()。稍后在onBindViewHolder中,检查position ==是否闪烁位置并在itemView上运行动画。您可以使用startDelay以获得更好的外观。