我正在对RecyclerView设置动画,并且一切正常,除了RecyclerView内部的视图无法正确显示。
使用通用动画XML
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<translate
android:fromXDelta="-100%p"
android:toXDelta="0"
android:repeatCount="infinite"
android:duration="3000"/>
//IS WORKING FINE, MOVES RECYCLERVIEW ACROSS SCREEN !
Recyclerview的代码
Animation animLinear;
//OnCreate
recyclerView = findViewById(R.id.item_list);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));
recyclerView.setAdapter(new Adapter_Main_Markets());
recyclerView.startAnimation(animLinear);
因此,正在发生的事情是recylerview的可见视图在屏幕上移动。我希望在RecyclerView上的屏幕内移动视图时有所帮助,但是我不知道如何正确地在Recyclerview内获取视图。
//Adapter Main Markets
@Override
public void onBindViewHolder(@NonNull Adapter_Main_Markets.MyViewHolder holder, int position) {
holder.mIdView.setText("" + market_list[position]);
holder.mPriceView.setText("$ " + int_list[position]);
holder.mChangeView.setText(change_list[position]);
}
我是否需要循环查看适配器中的视图?也许在那里设置动画?任何帮助将不胜感激。
这是RecyclerView
项目A项目B项目C项目D项目E。
屏幕上可见区域中实际显示的是 项目A项目B项目C。
因此,当然,可见的“ Item A Item B Item C”穿过了屏幕,但这不是我想要的。
我希望项目A穿过屏幕,然后项目B穿过项目C,然后穿过D,然后到达E。
答案 0 :(得分:2)
如果要在animate
内RecyclerView
个视图,则需要像这样在itemview
构造函数内对ViewHolder
进行动画处理,
class `Your view holder class` extends RecyclerView.ViewHolder {
`Constructor of your class`(View view) {
super(view);
//This piece of code will animate your itemview inside recyclerview
new Handler().postDelayed(() -> {
view.setVisibility(View.VISIBLE);
view.startAnimation(AnimationUtils.loadAnimation(view.getContext(), android.R.anim.fade_in // Change your anim file here));
}, 100);
setIsRecyclable(true);// Just to ensure that everytime view gets invisible, it should be recycled for next time recreation.
}
}
下一步是从您的
中删除重复计数anim.xml
删除
android:repeatCount="infinite"
,以便该视图 仅在可见时进行动画处理。