シナリオ: リスト ビューのアイテム間に線が必要で、アニメーションを適用したい (左からスライドするなど)。
さて、リストビューの仕切りをカスタマイズしました。今それをアニメーション化したかった。
可能な方法はありますか?
そうでない場合は、代替案を提案してください。
それを処理するには、行レイアウトに仕切りを追加することをお勧めします。listView の各行に表示されます。次に、onTouchListner
dividerObject (linearLayout) で使用して を初期化しますGesture Class
。
_dividerRow.setOnTouchListener(new MyGestureListener()
);
class MyGestureListener implements OnTouchListener
{
private PointF _init;
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN :
_init = new PointF(event.getRawX(), event.getRawY());
if(!(v == null))
{
_VelocityTracker = VelocityTracker.obtain();
_VelocityTracker.addMovement(event);
}
break;
case MotionEvent.ACTION_UP :
break;
case MotionEvent.ACTION_MOVE :
if(leave == false)
{
if(event.getX() > 0)
{
_VelocityTracker.addMovement(event);
float diffX = event.getRawX() - _init.x;
float diffY = event.getRawY() - _init.y;
if (Math.abs(diffX) > _slop && Math.abs(diffX) > Math.abs(diffY))
{
_swipping = true;
((ViewGroup) v).requestDisallowInterceptTouchEvent(true);
MotionEvent cancelEvent = MotionEvent.obtain(event);
cancelEvent.setAction(MotionEvent.ACTION_CANCEL | (event.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT));
v.onTouchEvent(cancelEvent);
}
if(_swipping == true)
{
ViewHelper.setTranslationX(v, diffX);
}
}
}
break;
}
return false;
}
}
それが役に立てば幸い