色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

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

Android動畫 時間:2018-09-26      來源:未知

補間動畫(Tween Animation)

補間動畫有以下四種

Alpha透明度動畫

Scale尺寸縮放動畫

Translate位置移動動畫

Rotate旋轉動畫

補間動畫的共同屬性

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

fillAfter:設置為true,動畫轉化在動畫結束后被應用

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

repeatCount:動畫重復次數

repeatMode:順序重復/倒序重復

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

動畫實現方式

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

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

(更靈活)

例如

用Java代碼去創建

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

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

//設置動畫時間為5秒

alpha.setDuration(5000);

//開始播放

img.startAnimation(alpha);

加載配置文件

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

//開始動畫

img.startAnimation(scale);

AlphaAnimation

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

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

ScaleAnimation

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

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

pivotX,pivotY分別為伸縮動畫相對于x,y軸開始位置

Translate

fromXDelta,fromYDelta分別是起始的X,Y的坐標

toXDelta,toYDelta分別是結束時X,Y的坐標

RotateAnimation

fromDegrees

toDegrees

pivotX,pivotY分別為旋轉動畫相對于x,y的坐標開始位置

動畫監聽器

AnimationListener

幀動畫(Frame Animation)

概念

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

幀動畫實現

使用加載配置文件

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

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

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

<item

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

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

<><item

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

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

</animation-list>

//載入xml逐幀動畫資源

imageView.setImageResource(R.drawable.btn_animation);

aniDrawable = (AnimationDrawable) imageView.getDrawable();

//播放動畫

aniDrawable.setOneShot(true);

aniDrawable.start();

//停止動畫

//aniDrawable.stop();

//檢查動畫是否正在播放

//aniDrawable.isRunning();

使用Java代碼創建

//創建動畫對象

AnimationDrawable aniDrawable = new AnimationDrawable();

//設置每一幀的幀圖片,每一幀播放時間

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);

練習

制作不會說話的湯姆貓

屬性動畫(Property Animation)

概念

andorid3.0引入。屬性動畫改變對象的一個field值實現動畫。指定你想要的屬性,多長時間,動畫的值就可以實現了。

Animation的局限性

一個屬性動畫的實現

//參數:

//動畫作用目標

//屬性

//屬性值

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

animator.setDuration(2000);

animator.start();

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

多個屬性動畫實現01

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

PropertyValuesHolder p02 = PropertyValuesHolder.ofFloat("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);

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

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

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

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

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

set.setDuration(1000);

set.start();

動畫監聽事件

透明度屬性動畫

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

animator.setDuration(1000);

//添加屬性動畫的監聽

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

}

//動畫結束之后調用該方法

@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 元素尺寸與位置

下一篇:交叉編譯器解析

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

回到頂部

主站蜘蛛池模板: 涩涩鲁亚洲精品一区二区 | 少妇高潮太爽了在线观看免费 | 最新亚洲AV成人网站在线观看 | 99久久婷婷国产综合精品青草免费 | 狼群社区WWW在线中文 | 精品一区二区三区自拍图片区 | 久久网站精品 | 张雨绮被揉到高潮下不了床 | 欧美肥屁videossex精品 | 国产色无码精品视频免费 | 欧美kkkk7777免费看 | 老色鬼永久精品网站 | 四虎影院网红美女 | 日本一卡2卡三卡4卡无卡免费网站 | 人妻少妇精品专区性色av | 亚洲国产精品无码中文字 | 久久久久久无码AV成人影院 | 四季av一区二区三 | 久热国产vs视频在线观看 | 欧美成人激情在线 | 可以直接在线观看的av | 97男人的天堂 | 国产免费看插插插视频 | 亚洲激情a | 总裁与秘书啪啪日常h男女 奇米视频888 | 亚洲A∨国产AV综合AV网站 | 日本xxxx裸体xxxx免费 | 嗯快点别停舒服好爽受不了了 | 成人爱做日本视频免费 | 歪歪爽蜜臀AV久久精品人人槡 | 色综合久久久久久 | 人人爽天天碰天天躁夜夜躁 | 老熟妇真实网站 | 被黑人伦流澡到高潮hn小说 | 久久久久久久久福利 | 日本乱子人伦在线视频 | 亚洲永久无码3D动漫一区 | 女同久久精品国产99国产精品 | 大地网资源在线观看免费高清 | 国产在线精品无码AV不卡顿 | 老师课后辅导乳揉搓H在线观看 |