動(dòng)畫的加載方式

幀動(dòng)畫動(dòng)態(tài)加載

private ImageView show_iv;

private AnimationDrawable drawable;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

show_iv = (ImageView) findViewById(R.id.show_iv);

// 資源文件加載的方式 ?一定要設(shè)置該資源為 ImageView的backGround ? 不能是 ?src

// drawable = (AnimationDrawable) show_iv.getBackground();

// // true 只播放一次 否則 重復(fù)播放 (默認(rèn))

// drawable.setOneShot(false);

drawable = new AnimationDrawable();

drawable.addFrame(getResources().getDrawable(R.drawable.girl_1), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_2), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_3), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_4), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_5), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_6), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_7), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_8), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_9), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_10), 200);

drawable.addFrame(getResources().getDrawable(R.drawable.girl_11), 200);

show_iv.setImageDrawable(drawable);

drawable.setOneShot(true);

}

public void onClick(View view) {

if (drawable.isRunning()) {

drawable.stop();

} else {

drawable.start();

}

}

}

補(bǔ)間動(dòng)畫

/**

* 補(bǔ)間動(dòng)畫 TwennAnimation 補(bǔ)充開始與結(jié)束之間的動(dòng)作 支持 位移隧熙, 旋轉(zhuǎn) 杆查,縮放 透明度的改變 這四種動(dòng)畫 并且 只支持 View 來執(zhí)行

* 動(dòng)畫的資源可以使用xml資源文件的方式 定義 也可以使用Java代碼的方式 定義

*

*

* xml資源放在 res文件夾下的 anim 文件夾中

* @author alice

*

*/

public class MainActivity extends Activity {

private ImageView show_iv;

// 每次加載 res 資源文件都是耗費(fèi)資源的一個(gè)過程 因此 先將資源加載出來 每次啟動(dòng)動(dòng)畫的時(shí)候 都直接執(zhí)行動(dòng)畫即可 不需要再次去加載資源

private Animation translate;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

show_iv = (ImageView) findViewById(R.id.show_iv);

show_iv.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "這里是View 存在的地方", Toast.LENGTH_SHORT).show();

}

});

}

public void onClick(View view) {

switch (view.getId()) {

case R.id.translate_bt:

// 位移動(dòng)畫

Animation tAnimation = new TranslateAnimation(0, 100, 0, 300);

tAnimation.setDuration(3000);

tAnimation.setFillAfter(true);

//插值器 ?減速插值器

tAnimation.setInterpolator(new DecelerateInterpolator());

show_iv.startAnimation(tAnimation);

break;

case R.id.alpha_bt:

// 透明度

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

alpha.setDuration(3000);

alpha.setFillAfter(true);

show_iv.startAnimation(alpha);

break;

case R.id.rotate_bt:

// 旋轉(zhuǎn)

Animation rotate = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,

0.5f);

rotate.setDuration(3000);

rotate.setFillAfter(true);

show_iv.startAnimation(rotate);

break;

case R.id.scale_bt:

// 縮放

Animation scale = new ScaleAnimation(1, 0.5f, 1, 1, 0, 0.5f);

scale.setDuration(3000);

scale.setFillAfter(true);

show_iv.startAnimation(scale);

break;

case R.id.set_bt:

// 集合

setAnimationList();

break;

default:

break;

}

}

private void setAnimationList() {

// false 使用集合動(dòng)畫 自己的 插值器

// true 則使用 set 默認(rèn)的 插值器

AnimationSet set = new AnimationSet(false);

//位移動(dòng)畫

Animation tAnimation = new TranslateAnimation(0, 100, 0, 200);

tAnimation.setDuration(3000);

//透明度動(dòng)畫

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

alpha.setDuration(3000);

//添加動(dòng)畫

set.addAnimation(tAnimation);

set.addAnimation(alpha);

//開始動(dòng)畫

show_iv.startAnimation(set);

}

屬性動(dòng)畫

/**

* 屬性動(dòng)畫

位移 translationX translationY

* 旋轉(zhuǎn) rotation rotationX rotationY

* 縮放 scaleX scaleY

* 透明度 alpha

*

* ObjectAnimator

* 構(gòu)造方法:

* ObjectAnimator.OfFloat()

* 第一個(gè)參數(shù):執(zhí)行該動(dòng)畫的對(duì)象

* 第二個(gè)參數(shù):動(dòng)畫的屬性名稱

* 第三個(gè)參數(shù):可變參數(shù)盅安,執(zhí)行的動(dòng)畫的值

*

* 集合

* AnimatorSet

* 邏輯不要出錯(cuò) ?不用使用重復(fù)的對(duì)象 并且 ?每一個(gè)關(guān)系都是相對(duì)于 第一個(gè)動(dòng)畫的

* set.Play().with().before().after()

*

*用集合將動(dòng)畫記錄下來 之后 ?有序或同步執(zhí)行

* set.playTogether(List)

* set.playSequentially(List)

*

*動(dòng)畫監(jiān)聽

* animator.setListener(){

* start

* end

* repeat

* cancle

* }

*

*動(dòng)畫延遲

* startDelayed

*

*

* 加載動(dòng)畫中的xml資源:

* 1.在res 文件夾下創(chuàng)建文件夾名字為 ? animator的文件夾

* 在 該文件夾下添加資源

*

* AnimatorInflate.loadAnimator(Context,resId);

* animator.setTartget(Object)

*

* ValueAnimator ?OnjectAnimator的 父類

* 也可以實(shí)現(xiàn)動(dòng)畫 只是比較麻煩

*

*

* @author alice

*

*/

public class MainActivity extends Activity {

private ImageView show_iv;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

show_iv = (ImageView) findViewById(R.id.show_iv);

show_iv.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this, "我就在這里痕惋!", Toast.LENGTH_SHORT).show();

}

});

}

@TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi")

public void onClick(View view) {

switch (view.getId()) {

case R.id.translate_bt:

// 位移動(dòng)畫

/*

* 第一個(gè)參數(shù): 執(zhí)行該動(dòng)畫的 對(duì)象 第二個(gè)參數(shù): 動(dòng)畫的屬性名稱 第三個(gè)參數(shù): 可變參數(shù) 執(zhí)行動(dòng)畫的 值

*

*/

ObjectAnimator translateAnimator = ObjectAnimator.ofFloat(show_iv, "translationX", 0, 200, 100, 50);

translateAnimator.setDuration(3000);

translateAnimator.start();

break;

case R.id.rotate_bt:

// 旋轉(zhuǎn)

ObjectAnimator rotationAnimator = ObjectAnimator.ofFloat(show_iv, "rotationY", 0, 360, 720);

rotationAnimator.setDuration(3 * 1000);

rotationAnimator.start();

break;

case R.id.scale_bt:

//縮放

ObjectAnimator scaleAnimator = ObjectAnimator.ofFloat(show_iv, "scaleX", 1, 4, 2);

scaleAnimator.setDuration(3000);

scaleAnimator.setRepeatCount(3);

// 動(dòng)畫延時(shí)

scaleAnimator.setStartDelay(3000);

scaleAnimator.start();

// 動(dòng)畫的監(jiān)聽

scaleAnimator.addListener(new AnimatorListener() {

@Override

public void onAnimationStart(Animator animation) {

// 動(dòng)畫開始的時(shí)候

Log.d("TAG", "onAnimationStart");

}

@Override

public void onAnimationRepeat(Animator animation) {

// 動(dòng)畫重復(fù)的時(shí)候

Log.d("TAG", "onAnimationRepeat");

}

@Override

public void onAnimationEnd(Animator animation) {

// 動(dòng)畫 結(jié)束的時(shí)候

Log.d("TAG", "onAnimationEnd");

}

@Override

public void onAnimationCancel(Animator animation) {

// 動(dòng)畫取消的時(shí)候

}

});

break;

case R.id.alpha_bt:

//透明

ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(show_iv, "alpha", 0, 1);

alphaAnimator.setDuration(3000);

alphaAnimator.start();

break;

case R.id.set_bt:

// 集合

AnimatorSet set = new AnimatorSet();

ObjectAnimator translateX = ObjectAnimator.ofFloat(show_iv, "translationX", 0, 200, 200, 0, 0);

translateX.setDuration(3000);

ObjectAnimator translateY = ObjectAnimator.ofFloat(show_iv, "translationY", 0, 0, 200, 200, 0);

translateY.setDuration(3000);

// 第二種表達(dá)方式

List list = new ArrayList();

list.add(translateY);

list.add(translateX);

// 依次執(zhí)行

// set.playSequentially(list);

// 同步執(zhí)行

// set.playTogether(list);

// 后面的 邏輯思維一定要正確 并且 同一個(gè)動(dòng)畫只能參與一次 后面的所有添加的 邏輯 都是相對(duì)于 第一個(gè) play()中的動(dòng)畫

set.play(translateX).with(translateY).after(translateY);

set.start();

break;

case R.id.value_bt:

// ValueAnimator 是 ObjectAnimator的 父類

// 實(shí)現(xiàn)起來比較麻煩

ValueAnimator animator = ValueAnimator.ofFloat(0, 200);

animator.setDuration(3000);

animator.addUpdateListener(new AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

float value = (Float) animation.getAnimatedValue();

show_iv.setTranslationX(value);

}

});

animator.start();

break;

default:

break;

}

}

}

這是我的動(dòng)畫源碼妓灌,是動(dòng)態(tài)加載把夸,

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末存哲,一起剝皮案震驚了整個(gè)濱河市雾袱,隨后出現(xiàn)的幾起案子械巡,更是在濱河造成了極大的恐慌刹淌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讥耗,死亡現(xiàn)場(chǎng)離奇詭異有勾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)古程,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蔼卡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挣磨,你說我怎么就攤上這事雇逞』缍” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵塘砸,是天一觀的道長(zhǎng)节仿。 經(jīng)常有香客問我,道長(zhǎng)掉蔬,這世上最難降的妖魔是什么廊宪? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮女轿,結(jié)果婚禮上箭启,老公的妹妹穿的比我還像新娘。我一直安慰自己谈喳,他們只是感情好册烈,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著婿禽,像睡著了一般赏僧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扭倾,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天淀零,我揣著相機(jī)與錄音,去河邊找鬼膛壹。 笑死驾中,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的模聋。 我是一名探鬼主播肩民,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼链方!你這毒婦竟也來了持痰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤祟蚀,失蹤者是張志新(化名)和其女友劉穎工窍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體前酿,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡患雏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罢维。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淹仑。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匀借,到底是詐尸還是另有隱情取试,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布怀吻,位于F島的核電站,受9級(jí)特大地震影響初婆,放射性物質(zhì)發(fā)生泄漏蓬坡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一磅叛、第九天 我趴在偏房一處隱蔽的房頂上張望屑咳。 院中可真熱鬧,春花似錦弊琴、人聲如沸兆龙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)紫皇。三九已至,卻和暖如春腋寨,著一層夾襖步出監(jiān)牢的瞬間聪铺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工萄窜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铃剔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓查刻,卻偏偏與公主長(zhǎng)得像键兜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子穗泵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 補(bǔ)間動(dòng)畫(Tween Animation) 補(bǔ)間動(dòng)畫有以下四種 Alpha透明度動(dòng)畫 Scale尺寸縮放動(dòng)畫 Tr...
    _執(zhí)_念__閱讀 442評(píng)論 0 1
  • 曾經(jīng)我們一度的使用動(dòng)畫普气,不管是利用xml還是代碼實(shí)現(xiàn),但是你深入思考過嗎(肯定有大牛早已知曉一切火欧,勿噴棋电,人都要有愛...
    laer_L閱讀 951評(píng)論 0 9
  • 前言 在學(xué)習(xí)了Android的動(dòng)畫之后,簡(jiǎn)單總結(jié)了一下苇侵,看完這篇文章就可以自己動(dòng)手寫一個(gè)簡(jiǎn)單的動(dòng)畫了 正文 An...
    墨月城汐閱讀 1,374評(píng)論 0 5
  • 回首翻看前歲事赶盔,兒時(shí)碎片盡毫梢。 時(shí)間存儲(chǔ)新除舊榆浓,難舍之疼不可消于未。 留下辛酸常憶憶,記得別忘搭誰橋。 無聊樂事隨塵...
    徐一村閱讀 285評(píng)論 0 3
  • 網(wǎng)上報(bào)了微信課烘浦,跟七七學(xué)畫瑜伽小人兒抖坪,今天只報(bào)站立體式:正面、側(cè)面闷叉、前屈擦俐。先一個(gè)田字形畫頭部,延中線延伸直線握侧,與頭...
    yogaying閱讀 753評(píng)論 0 0