久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Android動畫

Android動畫 時(shi)間:2018-09-26  ;    來源:未(wei)知

補間動(dong)畫(hua)(Tween Animation)

補間動畫有以下四種

Alpha透明度動畫

Scale尺寸縮放動(dong)畫(hua)

Translate位置移動動畫

Rotate旋轉動畫

補間動畫的共同屬性

Duration:動畫持續時間(單位:毫秒)

 fillAfter:設(she)置(zhi)為(wei)true,動畫轉化在動畫結束后被應用(yong)

interpolator:動畫插(cha)入器(加速、減(jian)速插(cha)入器)

repeatCount:動畫重復次數

repeatMode:順序重復/倒序重復

startOffset:動畫之間(jian)的時間(jian)間(jian)隔(應用(yong)于組合動畫)

動畫實現方式

配置文件(/res/anim)——alpha、scale、translate、rotate (更簡單)

Java代碼實現——AlphaAnimation、ScaleAnimation、TranslateAnimation、RotateAnimation

(更靈活)

例如

用Java代碼去(qu)創建

//創建Alpha動畫(透明度為10%-100%)

Animation alpha = new AlphaAnimation(0.1f,1.0f);

//設置(zhi)動畫時間為5秒

alpha.setDuration(5000);

//開始播放

img.startAnimation(alpha);

加載配置文件

Animation scale = AnimationUtils.loadAnimation(context, R.anim.scale_anim);

//開始(shi)動畫(hua)

img.startAnimation(scale);

AlphaAnimation

fromAlpha動畫起始時的(de)透明度 (1.0表示完全不(bu)透明)

toAlpha動畫終止時的透(tou)明度(du) (0.0表示(shi)完全透(tou)明)

ScaleAnimation

fromX,toX分別是起始和結束時(shi)x坐標上的伸縮尺寸

fromY,toY分別是起始和結束時y坐標上的伸縮尺寸(cun)

pivotX,pivotY分別(bie)為伸(shen)縮動(dong)畫相對于(yu)x,y軸(zhou)開始位置

Translate

fromXDelta,fromYDelta分別是起始(shi)的(de)X,Y的(de)坐標(biao)

toXDelta,toYDelta分別(bie)是結束時X,Y的(de)坐標

RotateAnimation

fromDegrees

toDegrees

pivotX,pivotY分(fen)別為旋轉動畫相對(dui)于(yu)x,y的坐(zuo)標(biao)開始位置

動畫監聽器

AnimationListener

幀動畫(hua)(Frame Animation)

概念

逐幀(zhen)動畫是一種常見的動畫形式(Frame By Frame),其原(yuan)理是在“連(lian)(lian)續的關鍵幀(zhen)”中(zhong)分解動畫動作,也就是在時間軸的每幀(zhen)上(shang)逐幀(zhen)繪制不同的內容(rong),使其連(lian)(lian)續播(bo)放(fang)而成(cheng)動畫。

幀動畫實現

使用加載配置文件(jian)

將圖片資(zi)源拷貝到drawable資(zi)源目錄中

在drawable目錄中創建幀動畫配置文件(jian)(jian),在該文件(jian)(jian)中配置動畫所(suo)需(xu)圖片,以及每個圖片停留時間(jian)。

<animation-list xmlns:android="//schemas.android.com/apk/res/android" >

<item

android:drawable="幀圖片的資源id"

android:duration="播放該幀(zhen)的時(shi)間"/>

<><item

android:drawable="幀圖片的資源(yuan)id"

android:duration="播放(fang)該幀的時間"/>

</animation-list>

//載(zai)入(ru)xml逐幀(zhen)動畫資源

imageView.setImageResource(R.drawable.btn_animation);

aniDrawable = (AnimationDrawable) imageView.getDrawable();

//播放動畫

aniDrawable.setOneShot(true);

aniDrawable.start();

//停止動畫

//aniDrawable.stop();

//檢查動畫是否正在播(bo)放(fang)

//aniDrawable.isRunning();

使用Java代(dai)碼(ma)創建(jian)

//創建(jian)動畫對象

 AnimationDrawable aniDrawable = new AnimationDrawable();

//設置每(mei)一幀的(de)幀圖(tu)片,每(mei)一幀播放時間

aniDrawable.addFrame(this.getResources().getDrawable(R.drawable.inc_btn_emphasize_normal), 100);

aniDrawable.addFrame(this.getResources().getDrawable(R.drawable.inc_btn_emphasize_pressed), 100);

aniDrawable.addFrame(this.getResources().getDrawable(R.drawable.inc_btn_normal), 100);

aniDrawable.addFrame(this.getResources().getDrawable(R.drawable.inc_btn_pressed), 100);

imageView.setImageDrawable(aniDrawable);

練習

制作不(bu)會(hui)說話的湯姆貓(mao)

屬(shu)性動(dong)畫(hua)(Property Animation)

概念

andorid3.0引入(ru)。屬性(xing)動畫改(gai)變(bian)對象的一個(ge)field值(zhi)實現(xian)動畫。指定你(ni)想要(yao)的屬性(xing),多長時間,動畫的值(zhi)就可以實現(xian)了。

Animation的局限(xian)性

一個屬性動畫的實現

//參數:

//動畫作用目(mu)標

//屬性

//屬性值

ObjectAnimator animator = ObjectAnimator.ofFloat(iv, "translationX", 0, 100);

animator.setDuration(2000);

animator.start();

Animation動畫(hua)框架僅僅只是(shi)讓圖像發生位移,而(er)監聽(ting)事(shi)件(jian)依然在原地。而(er)屬性動畫(hua)可(ke)以移動讓監聽(ting)事(shi)件(jian)也跟著移動。

多個屬性動畫實現01

PropertyValuesHolder p01 = PropertyValuesHolder.ofFloat("translationX&quot;, 0, 100);

PropertyValuesHolder p02 = PropertyValuesHolder.ofFloat(&quot;translationY", 0, 100);

PropertyValuesHolder p03 = PropertyValuesHolder.ofFloat("rotation", 0, 360);

ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(iv, p01, p02, p03);

animator.setDuration(2000);

animator.start();

多個屬性動畫實現02

 ObjectAnimator oa01 = ObjectAnimator.ofFloat(iv, "translationX", 0, 50);

ObjectAnimator oa02 = ObjectAnimator.ofFloat(iv, "translationY", 0, 50);

ObjectAnimator oa03 = ObjectAnimator.ofFloat(iv, "rotation", 0, 360);

AnimatorSet set = new AnimatorSet();

//同時播放

//set.playTogether(oa01, oa02, oa03);

 //按順(shun)序播(bo)(bo)放(先播(bo)(bo)01,再播(bo)(bo)02,后播(bo)(bo)03)

//set.playSequentially(oa01, oa02, oa03);

//按(an)指定(ding)順序播(bo)放(fang)(fang) (01和02同時播(bo)放(fang)(fang),后播(bo)放(fang)(fang)03)

set.play(oa01).with(oa02);

set.play(oa03).after(oa01);

set.setDuration(1000);

set.start();

動畫監聽事件

透明(ming)度屬(shu)性動畫(hua)

ObjectAnimator animator = ObjectAnimator.ofFloat(v, "alpha", 0, 1);

animator.setDuration(1000);

//添加屬(shu)性動畫(hua)的監聽

animator.addListener(new AnimatorListener() {

@Override

public void onAnimationStart(Animator animation) {

// TODO Auto-generated method stub

}

@Override

public void onAnimationRepeat(Animator animation) {

// TODO Auto-generated method stub

}

//動(dong)畫結束之后調用(yong)該方(fang)法

@Override

public void onAnimationEnd(Animator animation) {

// TODO Auto-generated method stub

 Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show();

}

@Override

public void onAnimationCancel(Animator animation) {

// TODO Auto-generated method stub

}

});

animator.start();

使用ValueAnimator改變文字顏色

ValueAnimator valueAni = ValueAnimator.ofInt(0, 255);

valueAni.setDuration(2000);

valueAni.addUpdateListener(new AnimatorUpdateListener() {

@Override

 public void onAnimationUpdate(ValueAnimator animation) {

// TODO Auto-generated method stub

 tv.setTextColor(Color.rgb((Integer)animation.getAnimatedValue(), 0, 0));

}

});

valueAni.start();

上一篇:DOM 元素尺寸與位置

下一篇:交叉編譯器解析

熱點文(wen)章推薦
華清(qing)學員(yuan)就(jiu)業榜單
高薪學員經(jing)驗分享
熱點新聞推薦
前臺專(zhuan)線(xian):010-82525158 企業培訓洽(qia)談專線:010-82525379 院(yuan)校合作洽談專(zhuan)線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部