我有一個列表視圖。我想添加一個動畫,如果我選擇一個列表項目,那麼它將被刪除,該項目下的其他項目將隨着向上滑動動畫向上移動。我已通過獲取其子位置來完成線性佈局,但我無法理解如何滑動listview的其餘元素。請幫助向上滑動選定的列表視圖項目的動畫
下面是我在動態創建的線性佈局動畫代碼
plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Animation animation1 = AnimationUtils.loadAnimation(getActivity(), R.anim.move);
final Animation animation2 = AnimationUtils.loadAnimation(getActivity(), R.anim.moveup);
這是該項目的動畫製作上,我們點擊
lay1.startAnimation(animation1);
這是代碼動畫休息的孩子向上滑動
final int i = lay1.getId() + 1;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
try {
LinearLayout l = (LinearLayout) layoutall.getChildAt(i);
l.startAnimation(animation2);
layoutall.removeView(lay1);
} catch (Exception e) {
//connectToDatabase();
}
}
}, 600);
更新代碼 非常感謝。我能夠實現這個功能,但問題是我在一個列表視圖中使用了兩個動畫,但無法實現第一個動畫。
我的列表項的代碼就是我要刷上點擊
viewHolder.accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeListItem(viewHolder.order_card_layout, position);
}
});
和代碼動畫左邊,而爲
protected void removeListItem(final View rowView, final int positon) {
// TODO Auto-generated method stub
final Animation animation = AnimationUtils.loadAnimation(rowView.getContext(), R.anim.move);
rowView.startAnimation(animation);
Animation.AnimationListener al = new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation arg0) {
ViewHolder vh = (ViewHolder) rowView.getTag();
//vh.needInflate = true;
}
@Override public void onAnimationRepeat(Animation animation) {}
@Override public void onAnimationStart(Animation animation) {}
};
collapse(rowView, al);
}
但問題是我的第一個動畫不能正常工作,那就是
final Animation animation = AnimationUtils.loadAnimation(rowView.getContext(), R.anim.move);
rowView.startAnimation(animation);
新更新的代碼 我能夠實現這個功能,但問題是,我用了兩個動畫和想要做的關於該項目的第一個動畫人,我點擊,並在所有的列表項另一個動畫但是我的問題是,我單擊幻燈片右側的項目,它也重新出現並向上滑動整個列表,但我希望我點擊的項目將向右滑動,其餘部分將滑動。
我的列表項的代碼就是我要刷上點擊
viewHolder.accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeListItem(viewHolder.order_card_layout, position);
}
});
和代碼動畫左邊,而爲
保護無效removeListItem(最終查看rowView,最終詮釋當前位置){ // TODO自動生成方法存根
final Animation animation = AnimationUtils.loadAnimation(rowView.getContext(), R.anim.move);
rowView.startAnimation(animation);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
try {
Animation.AnimationListener al = new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation arg0) {
ViewHolder vh = (ViewHolder) rowView.getTag();
//vh.needInflate = true;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
};
collapse(rowView, al);
} catch (Exception e) {
//connectToDatabase();
}
}
}, 600);
}
private void collapse(final View v, Animation.AnimationListener al) {
final int initialHeight = v.getMeasuredHeight();
Animation anim = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
if (interpolatedTime == 1) {
v.setVisibility(View.GONE);
}
else {
v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
v.requestLayout();
}
}
@Override
public boolean willChangeBounds() {
return true;
}
};
if (al!=null) {
anim.setAnimationListener(al);
}
anim.setDuration(600);
v.startAnimation(anim);
}
非常感謝。我能夠實現這個功能,但問題是我在一個列表視圖中使用了兩個動畫,但無法實現第一個動畫。我的代碼是: –