列表视图和片段中的视差

时间:2014-08-20 10:58:56

标签: android listview parallax

我正在寻找任何可以通过两个视图进行视差的好解决方案。

我的第一个视图是Fragment,第二个是ListView。

片段的最小高度等于200dp,当我想拖动列表视图时,片段将会增长。

我写了一些代码,但并不是我需要的全部代码。

public class MyListView extends ListView implements OnTouchListener {

    int touchActionDownY, touchActionMoveY;

    int parentHeight;
    int initialPosition = -1;

    TextView viewToMove;
    LinearLayout.LayoutParams params;

    public MyListView(Context context) {
        super(context);
        init();
    }

    public MyListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init () {
        setOnTouchListener(this);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        parentHeight = MeasureSpec.getSize(heightMeasureSpec);
        initialPosition = (int) getY();
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        int deltaY = 0;

        switch (event.getAction()) {

        case MotionEvent.ACTION_DOWN:

            touchActionDownY = (int)event.getY();
            touchActionMoveY = touchActionDownY;
            break; 

        case MotionEvent.ACTION_POINTER_UP:
            break; 

        case MotionEvent.ACTION_MOVE:

            deltaY = (int)event.getY() - touchActionMoveY;

            touchActionMoveY = (int)event.getY();


            if(getFirstVisiblePosition() == 0 && v.getY() < parentHeight && touchActionMoveY > touchActionDownY && deltaY > 0){
                params.height = params.height + deltaY;
                viewToMove.setLayoutParams(params);
                return true;
            } else if(v.getY() > 200 && touchActionMoveY < touchActionDownY && deltaY < 0) {
                params.height = params.height + deltaY;;
                viewToMove.setLayoutParams(params); 
                return true;
            } else {

            }

            break; 
        } 

        return false;
    }   


    public void setViewToMove(TextView v) {
        viewToMove = v;
        params = (android.widget.LinearLayout.LayoutParams) viewToMove.getLayoutParams();

    }

}

在这个ListView中,当用户抛出列表时我需要平滑的视图滚动。 (查看stoped,因为方法适用于ACTION_MOVE)。

任何帮助?

我需要与我的第一个片段进行互动。

当只列出清单时,视差应该有效。

0 个答案:

没有答案