真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

安卓屬性動畫-創(chuàng)新互聯(lián)

一.三種安卓動畫

成都創(chuàng)新互聯(lián)始終致力于在企業(yè)網(wǎng)站建設(shè)領(lǐng)域發(fā)展。秉承“創(chuàng)新、求實、誠信、拼搏”的企業(yè)精神,致力為企業(yè)提供全面的網(wǎng)絡(luò)宣傳與技術(shù)應用整體策劃方案,為企業(yè)提供包括“網(wǎng)站建設(shè)、成都響應式網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)、微信網(wǎng)站建設(shè)、微信平臺小程序開發(fā)、商城網(wǎng)站開發(fā)、平臺網(wǎng)站建設(shè)秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

1. Tween Animation(補間動畫、視圖動畫):通過對場景里的對象不斷做圖像變換(平移、縮放、旋轉(zhuǎn))產(chǎn)生的動畫效果,即是一種漸變動畫。

2. Frame Animation(幀動畫):順序播放事先做好的圖像,是一種畫面轉(zhuǎn)換動畫。

3. Property Animation:屬性動畫,通過動態(tài)地改變對象的屬性從而達到動畫效果,屬性動畫為API 11新特性。

二.屬性動畫的優(yōu)點

1.屬性動畫是通過閾值器來調(diào)整的,可以高效完成簡單的動畫效果,從而節(jié)約內(nèi)存空間。

2.對比幀動畫,是通過圖片的切換來實現(xiàn)動畫效果的,可以實現(xiàn)復雜的動畫效果但是非常耗內(nèi)存。

3.屬性動畫多用于控件的狀態(tài)變化,而幀動畫用于展現(xiàn)復雜且連續(xù)的圖片,比如短視頻等。

三.屬性動畫實例

1.效果展示

2.關(guān)鍵代碼?

.xml布局文件,采用線性布局,四個button和一個image

MainActive代碼

(1)moveView方法,修改view的位置,后續(xù)可調(diào)用該方法設(shè)置起始坐標及寬高

private void moveView(View view, int rawX, int rawY) {
    int left = rawX - view.getWidth() / 2;
    int top = rawY - view.getHeight();
    int weight = left + view.getWidth();
    int height = top + view.getHeight();
    view.layout(left, top, weight, height);
}

(2)動畫的實現(xiàn)

按鈕1,直線移動代碼實現(xiàn)

@Override
public void onClick(View view) {
    //獲取總布局的寬和高
    int width = ly_root.getWidth();
    int height = ly_root.getHeight();
    ValueAnimator va = ValueAnimator.ofInt(height, 0, height / 4, height / 2, height / 4 * 3, height);
    va.setDuration(3000l);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            int x = width / 2;
            int y = (int) va.getAnimatedValue();
            moveView(img_babi, x, y);
        }
    });
    va.setInterpolator(new LinearInterpolator());
    va.start();
}

按鈕二,縮放

@Override
public void onClick(View view) {
    final float scale = 0.5f;
    AnimatorSet scaleSet = new AnimatorSet();
    ValueAnimator vaSmall = ValueAnimator.ofFloat(1.0f, scale);
    vaSmall.setDuration(500);

    ValueAnimator vaLarge = ValueAnimator.ofFloat(scale, 1.0f);
    vaLarge.setDuration(500);
    vaSmall.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float scale = (float) valueAnimator.getAnimatedValue();
            img_babi.setScaleX(scale);
            img_babi.setScaleY(scale);
        }
    });
    vaLarge.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float scale = (float) valueAnimator.getAnimatedValue();
            img_babi.setScaleX(scale);
            img_babi.setScaleY(scale);
        }
    });
    scaleSet.play(vaLarge).after(vaSmall);
    scaleSet.start();

}

按鈕三,旋轉(zhuǎn)

@Override
public void onClick(View view) {
    int width = ly_root.getWidth();
    int height = ly_root.getHeight();
    final int R = width / 4;
    ValueAnimator va = ValueAnimator.ofFloat(0, (float) (2.0f * Math.PI));
    va.setDuration(1000);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            float t = (float) valueAnimator.getAnimatedValue();
            int x = (int) (R * Math.sin(t) + width / 2);
            int y = (int) (R * Math.cos(t) + height / 2);
            moveView(img_babi, x, y);
        }
    });
    va.setInterpolator(new DecelerateInterpolator());
    va.start();
}

按鈕四,圓形旋轉(zhuǎn)

@Override
public void onClick(View view) {
    ValueAnimator va = ValueAnimator.ofInt(0, 360);
    va.setDuration(1000l);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            int rotate = (Integer) valueAnimator.getAnimatedValue();
            img_babi.setRotation(rotate);
            float fractionValue = valueAnimator.getAnimatedFraction();
            img_babi.setAlpha(fractionValue);
        }
    });
    va.setInterpolator(new DecelerateInterpolator());
    va.start();

}

3.代碼功能總結(jié)

ofFloat,ofInt方法用來創(chuàng)建ValueAnimator實例

set...方法可以用來設(shè)置動畫持續(xù)時間等

start()方法可以開啟動畫

原文鏈接:

guoguoguoyaonuli

http://t.csdn.cn/vzwEj

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


文章題目:安卓屬性動畫-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/dgpjji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部