Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在RecyclerView中更改适配器时执行淡出动画_Java_Android_Android Recyclerview - Fatal编程技术网

Java 在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

我有一个RecyclerView对象:

// 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>