У меня есть список. Я хочу добавить одну анимацию, которая будет, если я выберу один элемент списка, тогда он будет удален, а остальные элементы ниже этого элемента будут сдвинуты с помощью анимации слайдов. Я сделал это с линейной компоновкой, получив свою дочернюю позицию, но я не могу понять, как продвигать элементы списка 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);
Нового обновленный код Я был в состоянии реализовать эту функциональность, но проблема в том, что я использовал две анимацию и хочу сделать первую анимацию по этому пункту, которого я нажимаю и другую анимацию по всем пунктам списка ниже того, что щелкнуло item.But моя проблема в том, что элемент, на который я нажал слайд справа, а также он появляется и перемещается вверх со списком цели, но я хочу, чтобы элемент, на который я нажимаю, будет правым слайдом, а остальное будет скользить вверх.
Мой код для элемента списка, к которому я хочу ударить слева, а на для анимации нажмите
viewHolder.accept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeListItem(viewHolder.order_card_layout, position);
}
});
И код
защищен недействительным removeListItem (окончательный View rowView, окончательное ИНТ positon) {// 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);
}
Большое спасибо. Я смог реализовать эту функциональность, но проблема в том, что я использовал две анимации в одном списке, но не смог реализовать первую анимацию. Мой код: –