0

场景:我需要在列表视图中的项目之间划一条线,并且想要应用动画(如从左侧滑动)。

好吧,我自定义了列表视图分隔线。现在想为它制作动画。

有没有可能的方法?

如果没有,建议任何替代方案。

4

1 回答 1

0

您最好将分隔线添加到行布局中来处理它。它将显示到 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;
        }
    }

希望能帮助到你

于 2013-07-11T09:44:12.937 回答