Java 在RecyclerView中更改适配器时执行淡出动画
我有一个RecyclerView对象:Java 在RecyclerView中更改适配器时执行淡出动画,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有一个RecyclerView对象: // List for filter. RecyclerView filterList; 然后,我的RecyclerView有一个自定义适配器: public class MainMenuAdapter extends RecyclerView.Adapter<MainMenuAdapter.ViewHolder> { Context mainContext; private static String[] menuTitle = {"Fi
// List for filter.
RecyclerView filterList;
然后,我的RecyclerView有一个自定义适配器:
public class MainMenuAdapter extends RecyclerView.Adapter<MainMenuAdapter.ViewHolder> {
Context mainContext;
private static String[] menuTitle = {"Filter", "Color"};
private static Integer[] menuImgId = {R.drawable.image_effect, R.drawable.color_enhance};
// Remember last item animated.
int lastPosition = -1;
// Sub-Menu Items.
private static Integer[] menuItemId = {AdapterStaticId.EDIT_EFFECT_ADAPTER, AdapterStaticId.EDIT_EFFECT_ADAPTER};
public ArrayList<ListItem> myList;
public static class ViewHolder extends RecyclerView.ViewHolder{
public LinearLayout container;
public TextView titleText;
public ImageView titleImage;
public ViewHolder(View view){
super(view);
container = (LinearLayout)view.findViewById(R.id.list_item_container);
titleText = (TextView)view.findViewById(R.id.titleText);
titleImage = (ImageView)view.findViewById(R.id.titleId);
}
}
MainMenuAdapter(Context MainContext){
mainContext = MainContext;
myList = new ArrayList<ListItem>();
myList.add(new ListItem(menuTitle[0], menuImgId[0]));
myList.add(new ListItem(menuTitle[1], menuImgId[1]));
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
// Get item in holder to assign value.
TextView myTitleText = holder.titleText;
ImageView myTitleImage = holder.titleImage;
myTitleText.setText(myList.get(position).itemName);
myTitleImage.setImageResource(myList.get(position).itemImg);
myTitleImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditImageActivity act = (EditImageActivity)mainContext;
act.ChangeAdapter(menuItemId[position]);
}
});
setAnimation(holder.container, position);
}
// Animation fade-in for each item i set in this block.
private void setAnimation(View animatedView, int curPos){
if(curPos > lastPosition){
Animation performAnimation = AnimationUtils.loadAnimation(mainContext, R.anim.custom_fade_in);
animatedView.startAnimation(performAnimation);
lastPosition = curPos;
}
}
// End setting animation.
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Inflate layout and return view holder for binding.
LayoutInflater myInflate = LayoutInflater.from(mainContext);
View mainView = myInflate.inflate(R.layout.list_item_layout, null);
MainMenuAdapter.ViewHolder myViewHolder = new ViewHolder(mainView);
return myViewHolder;
}
@Override
public int getItemCount() {
return menuTitle.length;
}
private class ListItem{
public String itemName;
public Integer itemImg;
public ListItem(String IN, Integer II){
itemName = IN;
itemImg = II;
}
}
// To reset position for next time perform fade in animation.
public void resetAnimation(){
lastPosition = -1;
}
我当前活动的界面如下:
public interface MainAdapterCallback {
public void ChangeAdapter(int adapterId);
}
以下是我的自定义\u fade\u in.xml:
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<alpha
android:duration="100"
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
</set>
运行我的应用程序时,这些代码运行良好,当我通过触摸相应的按钮在两个适配器之间切换时,我可以看到主菜单项和子菜单项的淡入动画,但如果我想在两个适配器切换时,在我的RecyclerView中为项目设置淡出动画,你能给我一个达到目的的方法吗
public interface MainAdapterCallback {
public void ChangeAdapter(int adapterId);
}
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<alpha
android:duration="100"
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
</set>