91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android 可滑動的View

發布時間:2020-07-17 09:13:17 來源:網絡 閱讀:958 作者:王宇斌 欄目:移動開發

   效果圖如下:

android 可滑動的View


方法一(實現原理,主要依靠移動動畫<TranslateAnimation>),主要代碼如下:


private OnTouchListener gonggaoOnTouch() {
        return new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN: {
                    break;
                }
                case MotionEvent.ACTION_UP: {
                    if (mAdsV.getTop() == mSlipRl.getTop() && moveY < 0) {
                        topTag();
                    } else if (moveY < -200) {
                        topTag();
                    } else {
                        nextTag();
                    }
                    break;
                }
                }
                gestureDetector.onTouchEvent(event);
                return true;
            }
            private void topTag() {
                animBuilder.setDurationMillis(400).setFromYValue(formY)
                        .setToYValue(mAdsV.getTop() - mSlipRl.getTop());
                bgMoveAnim = animBuilder.build();
                bgMoveAnim.setAnimationListener(new AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {
                        // TODO Auto-generated method stub
                    }
                    @Override
                    public void onAnimationRepeat(Animation animation) {
                        // TODO Auto-generated method stub
                    }
                    @Override
                    public void onAnimationEnd(Animation animation) {
                        // TODO Auto-generated method stub
                        mSlipRl.clearAnimation();
                        setLayout(mSlipRl, 0, mAdsV.getTop(), 0);
                        mSlipRl.invalidate();
                    }
                });
                mSlipRl.startAnimation(bgMoveAnim);
            }
            private void nextTag() {
                animBuilder.setDurationMillis(400).setFromYValue(formY)
                        .setToYValue(mAdsV.getBottom() - mSlipRl.getTop());
                bgMoveAnim = animBuilder.build();
                bgMoveAnim.setAnimationListener(new AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {
                        // TODO Auto-generated method stub
                    }
                    @Override
                    public void onAnimationRepeat(Animation animation) {
                        // TODO Auto-generated method stub
                    }
                    @Override
                    public void onAnimationEnd(Animation animation) {
                        // TODO Auto-generated method stub
                        mSlipRl.clearAnimation();
                        setLayout(mSlipRl, 0, mAdsV.getBottom(), 0);
                        mSlipRl.invalidate();
                    }
                });
                mSlipRl.startAnimation(bgMoveAnim);
            }
        };
    }


方法二,主要代碼如下:


@Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        // TODO Auto-generated method stub
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            lastY = event.getY();
            if(null==mLocationSlip||null==mSlipDown||null==mSlipMove){
                mLocationSlip = this.findViewById(R.id.location_slip);
                mSlipDown = this.findViewById(R.id.down_slip);
                mSlipMove = this.findViewById(R.id.move_slip);
            }
            top = mSlipMove.getTop();
            bottom = mSlipDown.getBottom();
            if (top <= lastY && lastY <= (bottom + top)) {
                isMove = true;
                return true;
            }
        case MotionEvent.ACTION_MOVE:
            if (isMove) {
                float newY = event.getY();
                int ay = (int) ((lastY - newY) * 0.5);
                lastY = newY;
                mSlipMove.offsetTopAndBottom(-ay);
            }
            break;
        case MotionEvent.ACTION_UP:
            if (isMove) {
                isMove = false;
                top = mSlipMove.getTop();
                System.out.println(top + "====" + bottom + "==="+ mLocationSlip.getBottom()*2/3);
                if(!location&&top<(mLocationSlip.getBottom()*2/3)){
                    setLayout(mSlipMove, 0, 0, 0);
                    location=true;
                }else if(location&&top>(mLocationSlip.getBottom()*1/3)){
                    setLayout(mSlipMove, 0, mLocationSlip.getBottom(), 0);
                    location=false;
                }else if(!location){
                    setLayout(mSlipMove, 0, mLocationSlip.getBottom(), 0);
                }else{
                    setLayout(mSlipMove, 0, 0, 0);
                }
            }
            break;
        }
        return super.dispatchTouchEvent(event);
    }



主要知識點,就是重新設置了View的位置,android 3.0之后View可以同setTop(),setLeft()等一系列方法直接設置位置方便了開發。3.0之前位置變化設置方法:


/**
     * 給view重置位置
     * @param view
     * @param x
     * @param y
     * @param b
     */
    public void setLayout(View view, int x, int y, int b) {
        MarginLayoutParams margin = new MarginLayoutParams(
                view.getLayoutParams());
        margin.setMargins(x, y, 0, b);
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
                margin);
        view.setLayoutParams(layoutParams);
    }


文章涉及知識點不多,相信一看就懂。如有問題,留言


下載移步:可滑動的View




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合山市| 海兴县| 上虞市| 革吉县| 南投市| 五台县| 哈巴河县| 普宁市| 孟津县| 满洲里市| 民丰县| 石台县| 房产| 山阴县| 贺州市| 岢岚县| 莱州市| 临江市| 满城县| 阿拉善左旗| 乐都县| 盱眙县| 泗水县| 铜山县| 子长县| 定州市| 永靖县| 永年县| 新疆| 凭祥市| 通道| 平潭县| 会昌县| 康保县| 乡城县| 岳阳市| 永定县| 宜宾县| 南丹县| 乌什县| 宿迁市|