第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

JelloToggle一個(gè)回彈效果的動(dòng)畫,用到TimeInterpolator

標(biāo)簽:
Android
JelloToggle extends FrameLayout
首先调用onMeasure方法计算计算宽高和限制距离等操作
mJelloRect.set(getMeasuredWidth() - mJelloSize, 0, getMeasuredWidth() + mDragLimit,
        mJelloSize);但是为什么要右边出去一点呢
mCheckedDrawable.setBounds(mJelloRect.left, mJelloRect.top, mJelloRect.left + mJelloSize,
        mJelloSize);
mOnCheckDrawable.setBounds(mJelloRect.left, mJelloRect.top, mJelloRect.left + mJelloSize,
        mJelloSize);
mUnCheckedDrawable.setBounds(mJelloRect.left, mJelloRect.top, mJelloRect.left + mJelloSize,
        mJelloSize)设置图片的位置
然后执行private void calPath() {
    mJelloPath.rewind();
    mJelloPath.moveTo(mJelloRect.right, 0);
    mJelloPath.lineTo(mJelloRect.left, 0);
    mJelloPath.cubicTo(mJelloRect.left, mJelloSize / 2, mJelloRect.left + mJelloOffset -
                    mJelloSize / 3, mJelloSize * 3 / 4,
            mJelloRect.left, mJelloSize);
    mJelloPath.lineTo(mJelloRect.right, mJelloRect.bottom);
    mJelloPath.close();
}
画图。有贝塞尔曲线点的路径,在下面 dispatchDraw方法中有调用
@Override
protected void dispatchDraw(Canvas canvas) {
    canvas.save();
    canvas.translate(mScrollOffset, 0);
    super.dispatchDraw(canvas);
    canvas.restore();
    canvas.save();
    canvas.translate(mScrollOffset / 2, 0);
    canvas.drawPath(mJelloPath, mJelloPaint);
    mDrawable.draw(canvas);
    canvas.restore();
}
这是一个画子view的类, canvas.save(); canvas.restore();配对使用,进行缩放和位移的时候,一个是画textview,一个是画我们的view,
@Override
public boolean onTouchEvent(MotionEvent event) {
    boolean ret = true;
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            if (!mScroller.isFinished()) {
                mScroller.forceFinished(true);
            }
            mTouchStartX = (int) event.getX();
            mDrawable = mOnCheckDrawable;
            break;
        case MotionEvent.ACTION_MOVE:
            int dragLen = Math.min(0, (int) event.getX() - mTouchStartX);
            mScrollOffset = Math.max(-mDragLimit, dragLen);
            mJelloOffset = dragLen;
            calPath();
            postInvalidate();
            break;
        case MotionEvent.ACTION_UP:
            if (mScrollOffset < 0) {
                mScroller.startScroll(mScrollOffset, 0, -mScrollOffset, 0);
                mJelloMax = mJelloOffset;
                if (mJelloOffset <= -mDragLimit) {
                    mChecked = !mChecked;
                    if (mListener != null) {
                        mListener.onCheckedChange(mChecked);
                    }
                }
                setJelloState();
                postInvalidate();
                startJello();
            }
            break;
    }

    return ret;
}
使用finish,移动的时候,记录整个view和自己的view移动的距离,进行画图用
mScroller.startScroll(mScrollOffset, 0, -mScrollOffset, 0);对自己进行回弹
private Runnable mJelloRunnable = new Runnable() {
    @Override
    public void run() {
        long playTime = AnimationUtils.currentAnimationTimeMillis() - mStartTime;
        if (playTime < mDuration) {
            float fraction = playTime / (float) mDuration;
            mJelloOffset = (int) (mJelloMax * (1 - mInterpolator.getInterpolation
                    (fraction)));
            calPath();
            ViewCompat.postInvalidateOnAnimation(JelloToggle.this);
            post(this);
        } else {
            mJelloOffset = 0;
            calPath();
            ViewCompat.postInvalidateOnAnimation(JelloToggle.this);
        }
    }
};
计算出回弹的及具体值,然后刷新,并且这个值是回弹的

原文链接:http://www.apkbus.com/blog-880881-63442.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消