0

シナリオ: リスト ビューのアイテム間に線が必要で、アニメーションを適用したい (左からスライドするなど)。

さて、リストビューの仕切りをカスタマイズしました。今それをアニメーション化したかった。

可能な方法はありますか?

そうでない場合は、代替案を提案してください。

4

1 に答える 1

0

それを処理するには、行レイアウトに仕切りを追加することをお勧めします。listView の各行に表示されます。次に、onTouchListnerdividerObject (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;
        }
    }

それが役に立てば幸い

于 2013-07-11T09:44:12.937 に答える