动画列表视图分隔符

时间:2013-07-11 09:30:39

标签: android listview

场景:我需要列表视图中的项目之间的一行,并且想要应用动画(如左侧的幻灯片)。

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

有可能吗?

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

1 个答案:

答案 0 :(得分:0)

您最好将分隔符添加到行布局中以进行处理。它将显示在listView中的每一行,然后在dividerObject(linearLayout)上使用onTouchListner来初始化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;
        }
    }

希望有所帮助