如何仅为recyclelerView项的一个字段设置动画

时间:2016-09-28 06:57:28

标签: android animation android-recyclerview

我有一个www.username.mywebsite.com项,其中包含RecyclerViewImageView1TextView1TextView2。我希望当应用程序运行时,ImageView2无限地拥有动画slideInLeft,对于textView2的每个项目,当您向下滚动并返回项目时,动画将重新开始。

xml中的recyclerView如下所示:

TextView

在我的RecyclerVew适配器中,我做了类似的事情:

<?xml version="1.0" encoding="utf-8"?>
 <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:textColor="@color/slideingText"
            android:textSize="18sp"
            android:layout_weight="2"
            android:layout_marginRight="3dp"
            android:text="this is some other text if you need this to be done you have to do it yourself"
            android:layout_gravity="center"
            android:singleLine="true"
            android:focusable="true"
            android:textStyle="bold"
            android:focusableInTouchMode="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:ellipsize="marquee"
            android:gravity="center"
            android:scrollHorizontally="true"
            android:id="@+id/currentShowTitle"/>

,其中

setAnimation(holder.currentShowTitle,position);

我也用过

 private void setAnimation(View viewToAnimate, int position)
    {
        if (position > lastPosition)
        {
            Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.slide_in_left);
            viewToAnimate.startAnimation(animation);
            lastPosition = position;
        }
    }

问题在于,当app运行时,它会动画,因为我只需要第一个项目,当我向下滚动并返回时,动画不会重新开始。 有人知道怎么做吗?

3 个答案:

答案 0 :(得分:0)

尝试在以下位置调用您的方法:

public void onBindViewHolder(mAdapter.MyViewHolder holder, int position)
{
setAnimation(//pass parameters(position etc...));
}

答案 1 :(得分:0)

OnBindViewHolder中编写以下代码

if (position == 0) {
     holder.yourView.startAnimation(Your_animation);
}

答案 2 :(得分:0)

如果您想在每次滚动时进行动画处理。删除您要存储最后位置的位置检查,然后转到:

 private void setAnimation(View viewToAnimate, int position)
{

        Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.slide_in_left);
        viewToAnimate.startAnimation(animation);

}