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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

基本的路徑動畫框架

標(biāo)簽:
Android
private FloatingActionButton fab;移动的imageview,一个可以设置阴影的imageview
/*设置动画路径*/
public void setPath(){
    path = new AnimatorPath();
    path.moveTo(0,0);
    path.lineTo(400,400);
    path.secondBesselCurveTo(600, 200, 800, 400); //订单
    path.thirdBesselCurveTo(100,600,900,1000,200,1200);
}
设置路径。这个path是自定义的,里面只有一些动作的类型属性和点的属性
/**
 * 设置动画
 * @param view 使用动画的View
 * @param propertyName 属性名字
 * @param path 动画路径集合
 */
private void startAnimatorPath(View view, String propertyName, AnimatorPath path) {
    ObjectAnimator anim = ObjectAnimator.ofObject(this, propertyName, new PathEvaluator(), path.getPoints().toArray());
    anim.setInterpolator(new DecelerateInterpolator());
    anim.setDuration(3000);
    anim.start();
}
/**
 * 设置View的属性通过ObjectAnimator.ofObject()的反射机制来调用
 * @param newLoc
 */
public void setFab(PathPoint newLoc) {
    fab.setTranslationX(newLoc.mX);
    fab.setTranslationY(newLoc.mY);
}
这里是反射机制调用activity里面的fab控件。也是属性,设置他的XY移动的值
public class PathEvaluator implements TypeEvaluator<PathPoint> {

    /**
     * @param t          :执行的百分比
     * @param startValue : 起点
     * @param endValue   : 终点
     * @return
     */
    @Override
    public PathPoint evaluate(float t, PathPoint startValue, PathPoint endValue) {
        float x, y;
        float oneMiunsT = 1 - t;
        //三阶贝塞尔曲线
        if (endValue.mOperation == PathPoint.THIRD_CURVE) {
            x = startValue.mX*oneMiunsT*oneMiunsT*oneMiunsT+3*endValue.mContorl0X*t*oneMiunsT*oneMiunsT+3*endValue.mContorl1X*t*t*oneMiunsT+endValue.mX*t*t*t;
            y = startValue.mY*oneMiunsT*oneMiunsT*oneMiunsT+3*endValue.mContorl0Y*t*oneMiunsT*oneMiunsT+3*endValue.mContorl1Y*t*t*oneMiunsT+endValue.mY*t*t*t;
        //二阶贝塞尔曲线
        }else if(endValue.mOperation == PathPoint.SECOND_CURVE){
            x = oneMiunsT*oneMiunsT*startValue.mX+2*t*oneMiunsT*endValue.mContorl0X+t*t*endValue.mX;
            y = oneMiunsT*oneMiunsT*startValue.mY+2*t*oneMiunsT*endValue.mContorl0Y+t*t*endValue.mY;
        //直线
        }else if (endValue.mOperation == PathPoint.LINE) {
            //x起始点+t*起始点和终点的距离
            x = startValue.mX + t * (endValue.mX - startValue.mX);
            y = startValue.mY + t * (endValue.mY - startValue.mY);
        } else {
            x = endValue.mX;
            y = endValue.mY;
        }
        return PathPoint.moveTo(x,y);
    }
}
这个自定义估值器,能够根据传入的值,不断改变返回值的X,Y坐标

原文链接:http://www.apkbus.com/blog-865677-63456.html

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

若覺得本文不錯,就分享一下吧!

評論

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

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

100積分直接送

付費專欄免費學(xué)

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

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

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

幫助反饋 APP下載

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

公眾號

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

舉報

0/150
提交
取消