[英]Android - Animate RecyclerView Item of Fragment Inside ViewPager
I am using ViewPager
with Fragments
. 我正在使用
ViewPager
和Fragments
。 Each Fragment have a RecyclerView
with GridLayoutManager
. 每个片段都有一个带有
GridLayoutManager
的RecyclerView
。 Inside my RecyclerView
adapter i have set up an animation on onBindViewHolder
. 在我的
RecyclerView
适配器里面,我在onBindViewHolder
上设置了一个动画。
Problem : 问题:
As ViewPager Loads two fragments at once, the animation for second fragments gets completed even if the view is not visible 由于ViewPager一次加载两个片段,即使视图不可见,第二个片段的动画也会完成
Expected output : 预期产量:
When someone swipe on viewPager all the RecyclerView Item should animate. 当有人在viewPager上滑动时,所有RecyclerView项都应该设置动画。
RecyclerView Adapter RecyclerView适配器
public void onBindViewHolder(ViewHolder viewHolder, final int position) {
viewHolder.getServiceImageView().setImageResource(mServices.get(position).getImageResource());
viewHolder.getServiceNameView().setText(mServices.get(position).getServiceName());
viewHolder.getPricePerHourView().setText(String.valueOf(mServices.get(position).getPricePerHour()));
setAnimation(viewHolder.serviceItemContainer, position);
}
private void setAnimation(View viewToAnimate, int position)
{
// If the bound view wasn't previously displayed on screen, it's animated
if (position > lastPosition)
{
Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.fade_in);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
Fragment Code 片段代码
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_cleaning, container, false);
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);
mRecyclerView.setLayoutManager(new GridLayoutManager(getContext(), SPAN_COUNT));
mServicesAdapter = new RecyclerViewAdapter(getContext(), data);
mRecyclerView.setAdapter(mServicesAdapter);
return rootView;
}
ViewPager adapter ViewPager适配器
private class SectionsPagerAdapter extends FragmentStatePagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
fragment = new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
default:
return new Fragment4();
}
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
case 2:
return getString(R.string.title_section3).toUpperCase(l);
case 3:
return getString(R.string.title_section4).toUpperCase(l);
}
return null;
}
Can anyone suggest me how to do this? 谁能建议我怎么做?
Try this 尝试这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.