我想在回收商查看物品時添加動畫。不是當我滾動,或者在項目被添加之後。我試圖模仿的行爲與當您有FloatingActionMenu並將FloatingActionButtons添加到該菜單時類似。菜單打開,逐個顯示項目。我如何完成這種行爲?我沒有使用FloatingActionMenu或FloatingActionButtons,因爲我想膨脹更復雜的視圖。正如你可以看到,這些菜單被限制如何使用回收站視圖創建浮動操作按鈕菜單行爲?
我曾嘗試在onBindViewHolder添加動畫,但這是爲時已晚。所有項目都在同一時間添加,動畫全部同時發生,而不是按順序發生。想到的唯一想法是將項目逐個添加到適配器,並對notifyDataSet進行更改,但我想挑選社區的大腦來查看是否有更好的方法。這裏是我的適配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private final static int FADE_DURATION = 10000; // in milliseconds
private Context mContext;
private String[] mContent;
public MyAdapter(Context context, String[] content) {
mContext = context;
mContent = content;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.items, parent, false));
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.tvText.setText(mContent[position]);
// Set the view to fade in
setScaleAnimation(holder.itemView);
}
@Override
public int getItemCount() {
return mContent.length;
}
private void setFadeAnimation(View view) {
AlphaAnimation anim = new AlphaAnimation(0.0f, 1.0f);
anim.setDuration(FADE_DURATION);
view.startAnimation(anim);
}
private void setScaleAnimation(View view) {
ScaleAnimation anim = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
anim.setDuration(FADE_DURATION);
view.startAnimation(anim);
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView tvText;
public ViewHolder(View itemView) {
super(itemView);
tvText = (TextView) itemView.findViewById(R.id.tv_text);
}
}
}
這是我如何初始化和將數據發送到我的適配器
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
rv.setLayoutManager(layoutManager);
mAdapter = new MyAdapter(mContext, mContent);
rv.setAdapter(mAdapter);
我曾嘗試一些其他的事情是控制項目的時間,因爲他們加入。我嘗試使用setItemAnimator,然後設置項目的addDuration。沒有一個按預期工作。
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
rv.setLayoutManager(layoutManager);
mAdapter = new MyAdapter(mContext, mContent);
DefaultItemAnimator animation = new DefaultItemAnimator();
animation.setAddDuration(100000); // << this attribute seems to make no difference
rvItems.setItemAnimator(animation);
rv.setAdapter(mAdapter);
你可能想創建一個['ItemAnimator'(https://developer.android.com/reference/android/support/v7/widget/RecyclerView.ItemAnimator.html)。請注意,您不必從頭開始,它可能足以擴展該頁面上列出的現有子類之一。 – Karakuri
@Karakuri itemAnimator似乎只適用於可滾動項目。所以當我滾動時,滾動時添加的第一個項目上發生的動畫。我需要攔截項目,然後才能添加和綁定。 – portfoliobuilder
我不知道你的意思是「可滾動」的物品。文檔建議可以動畫添加,移動,更改和刪除項目。 – Karakuri