Android 動畫詳解

其實前面有一篇關(guān)于動畫的詳細(xì)介紹了,寫這一篇博客就是為了更細(xì)致的介紹動畫太颤,多貼出來一些代碼谨垃,更直觀探討一下動畫的使用……
一、Animations介紹
Animations是一個實現(xiàn)Android UI界面動畫效果的API窖式,Animations提供了一系列的動畫效果,可以進(jìn)行旋轉(zhuǎn)动壤、縮放脖镀、淡入淡出等,這些效果可以應(yīng)用在絕大多數(shù)的控件中狼电。
二蜒灰、Animations的分類
Animations從總體上可以分為三大類:
1 . Tweened Animations:該類Animations提供了旋轉(zhuǎn)、移動肩碟、伸展和淡出等效果强窖。Alpha——淡入淡出,Scale——縮放效果削祈,Rotate——旋轉(zhuǎn)翅溺,Translate——移動效果。
2 . Frame-by-frame Animations:這一類Animations可以創(chuàng)建一個Drawable序列髓抑,這些Drawable可以按照指定的時間間歇一個一個的顯示咙崎。
3 . Property Animation : 故名思議就是通過動畫的方式改變對象的屬性了. 屬性動畫就是,動畫的執(zhí)行類來設(shè)置動畫操作的對象的屬性吨拍、持續(xù)時間褪猛,開始和結(jié)束的屬性值,時間差值等羹饰,然后系統(tǒng)會根據(jù)設(shè)置的參數(shù)動態(tài)的變化對象的屬性伊滋。
三、Animations的使用方法(代碼中使用)
Animations extends Object implements Cloneable 使用TweenedAnimations的步驟:   
1.創(chuàng)建一個AnimationSet對象(Animation子類)队秩;   
2.增加需要創(chuàng)建相應(yīng)的Animation對象笑旺;   
3.更加項目的需求,為Animation對象設(shè)置相應(yīng)的數(shù)據(jù)馍资;   
4.將Animatin對象添加到AnimationSet對象當(dāng)中筒主;   
5.使用控件對象開始執(zhí)行AnimationSetTweened

Animations的分類   
1、Alpha:淡入淡出效果   
2、Scale:縮放效果   
3乌妙、Rotate:旋轉(zhuǎn)效果   
4色洞、Translate:移動效果
Animation的四個子類:
  AlphaAnimation、TranslateAnimation冠胯、ScaleAnimation、RotateAnimation
四锦针、代碼具體使用
Tween Animations的通用方法   
1荠察、setDuration(long durationMills)      設(shè)置動畫持續(xù)時間(單位:毫秒)   
2、setFillAfter(Boolean fillAfter)      如果fillAfter的值為true,則動畫執(zhí)行后奈搜,控件將停留在執(zhí)行結(jié)束的狀態(tài)   
3悉盆、setFillBefore(Boolean fillBefore)     如果fillBefore的值為true,則動畫執(zhí)行后馋吗,控件將回到動畫執(zhí)行之前的狀態(tài)   
4焕盟、setStartOffSet(long startOffSet)     設(shè)置動畫執(zhí)行之前的等待時間   
5、setRepeatCount(int repeatCount)     設(shè)置動畫重復(fù)執(zhí)行的次數(shù)
(一)代碼中使用Animation
漸變動畫

/**
 * 漸變動畫
 */
 public static void alphaAction(View view) {
     //創(chuàng)建一個AnimationSet對象宏粤,參數(shù)為Boolean型脚翘,
     //true表示使用Animation的interpolator,false則是使用自己的 
     AnimationSet animationSet = new AnimationSet(true)
     //創(chuàng)建一個AlphaAnimation對象绍哎,參數(shù)從完全的透明度来农,到完全的不透明 
     AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0); 
     //設(shè)置動畫執(zhí)行的時間
     alphaAnimation.setDuration(500); 
    //將alphaAnimation對象添加到AnimationSet當(dāng)中 
     animationSet.addAnimation(alphaAnimation);
    //使用ImageView的startAnimation方法執(zhí)行動畫 
     view.startAnimation(animationSet);
 }

旋轉(zhuǎn)動畫

/**
 * 旋轉(zhuǎn)動畫
 */ 
public static void rotateAction(View view) { 
       AnimationSet animationSet = new AnimationSet(true);
       //參數(shù)1:從哪個旋轉(zhuǎn)角度開始 
       //參數(shù)2:轉(zhuǎn)到什么角度 
       //后4個參數(shù)用于設(shè)置圍繞著旋轉(zhuǎn)的圓的圓心在哪里
       //參數(shù)3:確定x軸坐標(biāo)的類型,有ABSOLUT絕對坐標(biāo)崇堰、
       RELATIVE_TO_SELF相對于自身坐標(biāo)沃于、RELATIVE_TO_PARENT相對于父控件的坐標(biāo) 
      //參數(shù)4:x軸的值,0.5f表明是以自身這個控件的一半長度為x軸 
      //參數(shù)5:確定y軸坐標(biāo)的類型 
      //參數(shù)6:y軸的值海诲,0.5f表明是以自身這個控件的一半長度為x軸 
      RotateAnimation rotateAnimation = new RotateAnimation(0, 360, 
      Animation.RELATIVE_TO_SELF, 0.5f, 
      Animation.RELATIVE_TO_SELF, 0.5f); 
      rotateAnimation.setDuration(1000); 
      animationSet.addAnimation(rotateAnimation); 
      view.startAnimation(animationSet);
 }

縮放動畫

/**
 * 縮放動畫 
*/
 public static void scaleAction(View view) { 
        //參數(shù)1:x軸的初始值 
        //參數(shù)2:x軸收縮后的值 
        //參數(shù)3:y軸的初始值 
        //參數(shù)4:y軸收縮后的值 
        //參數(shù)5:確定x軸坐標(biāo)的類型 
        //參數(shù)6:x軸的值繁莹,0.5f表明是以自身這個控件的一半長度為x軸 
        //參數(shù)7:確定y軸坐標(biāo)的類型 
        //參數(shù)8:y軸的值,0.5f表明是以自身這個控件的一半長度為x軸 
        AnimationSet animationSet = new AnimationSet(true); 
        ScaleAnimation scaleAnimation = new ScaleAnimation( 0, 0.1f, 0,  0.1f, Animation.RELATIVE_TO_SELF, 1, 
        Animation.RELATIVE_TO_SELF, 1); 
        scaleAnimation.setDuration(1000); 
        animationSet.addAnimation(scaleAnimation); 
        view.startAnimation(animationSet); 
}

位移動畫

/** 
* 位移動畫
 */
public static void translateAction(View view) { 
        AnimationSet animationSet = new AnimationSet(true);
        //參數(shù)1~2:x軸的開始位置 
        //參數(shù)3~4:y軸的開始位置 
        //參數(shù)5~6:x軸的結(jié)束位置 
        //參數(shù)7~8:x軸的結(jié)束位置 
        TranslateAnimation  translateAnimation = new 
        TranslateAnimation( Animation.RELATIVE_TO_SELF, 0f, 
        Animation.RELATIVE_TO_SELF, 0.5f, 
        Animation.RELATIVE_TO_SELF, 0f, 
        Animation.RELATIVE_TO_SELF, 0.5f); 
        translateAnimation.setDuration(1000); 
        animationSet.addAnimation(translateAnimation); 
        view.startAnimation(animationSet); 
}

下面貼出整理后的整個動畫工具類

import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;

/**
 * Created by 大軍 on 2016/5/3 
*/
public class AnimationTools { 
/** 
* Tween Animations的通用方法
* 1特幔、setDuration(long durationMills)
* 設(shè)置動畫持續(xù)時間(單位:毫秒)
* 2咨演、setFillAfter(Boolean fillAfter) 
* 如果fillAfter的值為true,則動畫執(zhí)行后,控件將停留在執(zhí)行結(jié)束的狀態(tài) 
* 3蚯斯、setFillBefore(Boolean fillBefore) 
* 如果fillBefore的值為true雪标,則動畫執(zhí)行后,控件將回到動畫執(zhí)行之前的狀態(tài) 
* 4溉跃、setStartOffSet(long startOffSet) 
* 設(shè)置動畫執(zhí)行之前的等待時間 
* 5村刨、setRepeatCount(int repeatCount)
* 設(shè)置動畫重復(fù)執(zhí)行的次數(shù) 
*/
   // private static AnimationTools animationTools = null;
   // private AnimationTools() {
   //}
   // public static AnimationTools instance() {
         // if (animationTools == null) {
             // synchronized (animationTools) {
                 // if (animationTools == null) {
                   // animationTools = new AnimationTools();
                  // }
             // }
          // }
       // return animationTools;
// }

/** 
* 漸變動畫 
*/
 public static void alphaAction(View view) {

      //創(chuàng)建一個AnimationSet對象,參數(shù)為Boolean型撰茎,
      //true表示使用Animation的interpolator嵌牺,false則是使用自己的 
      AnimationSet animationSet = new AnimationSet(true); 
      //創(chuàng)建一個AlphaAnimation對象,參數(shù)從完全的透明度,到完全的不透明
      AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0); 
      //設(shè)置動畫執(zhí)行的時間
      alphaAnimation.setDuration(500);
      //將alphaAnimation對象添加到AnimationSet當(dāng)中 
      animationSet.addAnimation(alphaAnimation);
      //使用ImageView的startAnimation方法執(zhí)行動畫 
      view.startAnimation(animationSet);
 }
 public static void alphaAction(AnimationSet animationSet) { 
          //創(chuàng)建一個AlphaAnimation對象逆粹,參數(shù)從完全的透明度募疮,到完全的不透明 
          AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
          //設(shè)置動畫執(zhí)行的時間 
          alphaAnimation.setDuration(500); 
          //將alphaAnimation對象添加到AnimationSet當(dāng)中 
          animationSet.addAnimation(alphaAnimation); 
          //使用ImageView的startAnimation方法執(zhí)行動畫 
 }

/**
* 旋轉(zhuǎn)動畫 
*/
 public static void rotateAction(View view) {
           AnimationSet animationSet = new AnimationSet(true); 
           //參數(shù)1:從哪個旋轉(zhuǎn)角度開始
           //參數(shù)2:轉(zhuǎn)到什么角度 
           //后4個參數(shù)用于設(shè)置圍繞著旋轉(zhuǎn)的圓的圓心在哪里 
           //參數(shù)3:確定x軸坐標(biāo)的類型,有ABSOLUT絕對坐標(biāo)僻弹、RELATIVE_TO_SELF相對于自身坐標(biāo)阿浓、RELATIVE_TO_PARENT相對于父控件的坐標(biāo) 
           //參數(shù)4:x軸的值,0.5f表明是以自身這個控件的一半長度為x軸 
           //參數(shù)5:確定y軸坐標(biāo)的類型 
           //參數(shù)6:y軸的值蹋绽,0.5f表明是以自身這個控件的一半長度為x軸 
           RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, 
           Animation.RELATIVE_TO_SELF, 0.5f); 
           rotateAnimation.setDuration(1000); 
           animationSet.addAnimation(rotateAnimation); 
           view.startAnimation(animationSet); } public static void 
           rotateAction(AnimationSet animationSet) { RotateAnimation 
           rotateAnimation = new RotateAnimation(0, 360, 
           Animation.RELATIVE_TO_SELF, 0.5f, 
           Animation.RELATIVE_TO_SELF, 0.5f); 
           rotateAnimation.setDuration(1000); 
           animationSet.addAnimation(rotateAnimation);
 }

/**
* 縮放動畫 
*/
  public static void scaleAction(View view) {
                //參數(shù)1:x軸的初始值
                //參數(shù)2:x軸收縮后的值 
                //參數(shù)3:y軸的初始值 
                //參數(shù)4:y軸收縮后的值 
                //參數(shù)5:確定x軸坐標(biāo)的類型 
                //參數(shù)6:x軸的值芭毙,0.5f表明是以自身這個控件的一半長度為x軸 
                //參數(shù)7:確定y軸坐標(biāo)的類型 
                //參數(shù)8:y軸的值,0.5f表明是以自身這個控件的一半長度為x軸
             AnimationSet animationSet = new AnimationSet(true); 
             ScaleAnimation scaleAnimation = new ScaleAnimation( 0, 0.1f, 0, 0.1f, Animation.RELATIVE_TO_SELF, 1, 
             Animation.RELATIVE_TO_SELF, 1); 
             scaleAnimation.setDuration(1000); 
             animationSet.addAnimation(scaleAnimation); 
             view.startAnimation(animationSet); } public static void 
             scaleAction(AnimationSet animationSet) { ScaleAnimation 
             scaleAnimation = new ScaleAnimation( 0, 0.1f, 0, 0.1f, 
             Animation.RELATIVE_TO_SELF, 1, 
             Animation.RELATIVE_TO_SELF, 1); 
             scaleAnimation.setDuration(1000); 
             animationSet.addAnimation(scaleAnimation);
 } 

/** 
* 位移動畫 
*/ 
public static void translateAction(View view) {
             AnimationSet animationSet = new AnimationSet(true);
             //參數(shù)1~2:x軸的開始位置 
             //參數(shù)3~4:y軸的開始位置 
             //參數(shù)5~6:x軸的結(jié)束位置 
             //參數(shù)7~8:x軸的結(jié)束位置 
             TranslateAnimation translateAnimation = new 
             TranslateAnimation( Animation.RELATIVE_TO_SELF, 0f, 
             Animation.RELATIVE_TO_SELF, 0.5f, 
             Animation.RELATIVE_TO_SELF, 0f, 
             Animation.RELATIVE_TO_SELF, 0.5f); 
             translateAnimation.setDuration(1000); 
             animationSet.addAnimation(translateAnimation); 
             view.startAnimation(animationSet);
 } 
 public static void translateAction(AnimationSet animationSet) { 
            TranslateAnimation translateAnimation = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0f,Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0f,Animation.RELATIVE_TO_SELF, 0.5f); 
            translateAnimation.setDuration(1000); 
            animationSet.addAnimation(translateAnimation);
 }

 /**
 * 屬性動畫
 */ 
 public void propertyValuesHolder(View view) { 
           PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("alpha", 1f, 0f, 1f); 
           PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleX", 1f, 0, 1f); 
           PropertyValuesHolder pvhZ = PropertyValuesHolder.ofFloat("scaleY", 1f, 0, 1f); 
           ObjectAnimator.ofPropertyValuesHolder(view, pvhX, pvhY, pvhZ).setDuration(1000).start(); 
  }
 }

(二)在xml中使用Animations
1.在res文件夾下建立一個anim文件夾卸耘; 2.創(chuàng)建xml文件退敦,并首先加入set標(biāo)簽,更改標(biāo)簽如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_interpolator">
</set>

3.在該標(biāo)簽當(dāng)中加入rotate蚣抗,alpha侈百,scale或者translate標(biāo)簽;

<alpha 
android:fromAlpha="1.0" 
android:toAlpha="0.0" 
android:startOffset="500" 
android:duration="500"/>

4.在代碼當(dāng)中使用AnimationUtils當(dāng)中裝載xml文件翰铡,并生成Animation對象钝域。因為Animation是AnimationSet的子類,所以向上轉(zhuǎn)型锭魔,用Animation對象接收网梢。

Animation animation = AnimationUtils.loadAnimation( 
Animation1Activity.this, R.anim.alpha); // 啟動動畫 
image.startAnimation(animation);

貼出具體代碼
1、 alpha.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> 
<!-- fromAlpha和toAlpha是起始透明度和結(jié)束時透明度 --> 
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0" 
android:startOffset="500" 
android:duration="500"/>
</set>

2赂毯、 rotate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
 <!-- fromDegrees:開始的角度 toDegrees:結(jié)束的角度战虏,+表示是正的 pivotX:用于設(shè)置旋轉(zhuǎn)時的x軸坐標(biāo) 例 1)當(dāng)值為"50",表示使用絕對位置定位 2)當(dāng)值為"50%"党涕,表示使用相對于控件本身定位 3)當(dāng)值為"50%p"烦感,表示使用相對于控件的父控件定位 pivotY:用于設(shè)置旋轉(zhuǎn)時的y軸坐標(biāo) -->
<rotate android:fromDegrees="0" 
android:toDegrees="+360" 
android:pivotX="50%" 
android:pivotY="50%" 
android:duration="1000"/>
</set>

3、 scale.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<!-- 起始x軸坐標(biāo) 止x軸坐標(biāo) 始y軸坐標(biāo) 止y軸坐標(biāo) 軸的坐標(biāo) 軸的坐標(biāo) -->
<scale android:fromXScale="1.0" 
android:toXScale="0.0" 
android:fromYScale="1.0"
android:toYScale="0.0" 
android:pivotX="50%" 
android:pivotY="50%" 
android:duration="1000"/>
</set>

4膛堤、 translate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> 
<!-- 始x軸坐標(biāo) 止x軸坐標(biāo) 始y軸坐標(biāo) 止y軸坐標(biāo) --> 
<translate android:fromXDelta="0%"
android:toXDelta="100%" 
android:fromYDelta="0%" 
android:toYDelta="100%"
android:duration="2000"/>
</set>

5手趣、 Java文件

import android.app.Activity;importandroid.os.Bundle;
import android.view.View;importandroid.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;import android.widget.Button;
import android.widget.ImageView;


public class Animation1Activity extends Activity { 
private Button rotateButton = null; 
private Button scaleButton = null; 
private Button alphaButton = null;
private Button translateButton = null;
private ImageView image = null;


 @Override 
 public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);

    rotateButton = (Button) findViewById(R.id.rotateButton); 
    scaleButton = (Button) findViewById(R.id.scaleButton); 
    alphaButton = (Button) findViewById(R.id.alphaButton); 
    translateButton = (Button) findViewById(R.id.translateButton); 
    image = (ImageView) findViewById(R.id.image); 
    rotateButton.setOnClickListener(newRotateButtonListener()); 
    scaleButton.setOnClickListener(newScaleButtonListener()); 
    alphaButton.setOnClickListener(newAlphaButtonListener()); 
    translateButton.setOnClickListener(newTranslateButtonListener(); 
 } 
 class AlphaButtonListener implementsOnClickListener {
    public void onClick(View v) { 
      // 使用AnimationUtils裝載動畫配置文件
      Animation animation = AnimationUtils.loadAnimation( 
      Animation1Activity.this, R.anim.alpha); 
      // 啟動動畫 
      image.startAnimation(animation); 
   }
 } 
 class RotateButtonListener implementsOnClickListener { 
    public void onClick(View v) {
        Animation animation = AnimationUtils.loadAnimation( 
        Animation1Activity.this, R.anim.rotate); 
        image.startAnimation(animation); 
    }
 }
 class ScaleButtonListener implementsOnClickListener { 
    public void onClick(View v) {  
      Animation animation = AnimationUtils.loadAnimation( 
      Animation1Activity.this, R.anim.scale); 
      image.startAnimation(animation); 
    }
 }
 class TranslateButtonListener implementsOnClickListener { 
    public void onClick(View v) { 
        Animation animation =AnimationUtils.loadAnimation( 
        Animation1Activity.this, R.anim.translate); 
        image.startAnimation(animation); 
     }
 }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肥荔,隨后出現(xiàn)的幾起案子绿渣,更是在濱河造成了極大的恐慌,老刑警劉巖燕耿,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件中符,死亡現(xiàn)場離奇詭異,居然都是意外死亡誉帅,警方通過查閱死者的電腦和手機(jī)淀散,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門右莱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人档插,你說我怎么就攤上這事慢蜓。” “怎么了郭膛?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵晨抡,是天一觀的道長。 經(jīng)常有香客問我则剃,道長耘柱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任忍级,我火速辦了婚禮,結(jié)果婚禮上伪朽,老公的妹妹穿的比我還像新娘轴咱。我一直安慰自己,他們只是感情好烈涮,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布朴肺。 她就那樣靜靜地躺著,像睡著了一般坚洽。 火紅的嫁衣襯著肌膚如雪戈稿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天讶舰,我揣著相機(jī)與錄音鞍盗,去河邊找鬼。 笑死跳昼,一個胖子當(dāng)著我的面吹牛般甲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹅颊,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼敷存,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了堪伍?” 一聲冷哼從身側(cè)響起锚烦,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帝雇,沒想到半個月后涮俄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡尸闸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年禽拔,在試婚紗的時候發(fā)現(xiàn)自己被綠了刘离。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡睹栖,死狀恐怖硫惕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情野来,我是刑警寧澤恼除,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站曼氛,受9級特大地震影響豁辉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舀患,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一徽级、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聊浅,春花似錦餐抢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至顽冶,卻和暖如春欺抗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背强重。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工绞呈, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人间景。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓报强,卻偏偏與公主長得像,于是被迫代替她去往敵國和親拱燃。 傳聞我的和親對象是個殘疾皇子秉溉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

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

  • Android框架提供了兩個動畫系統(tǒng),屬性動畫(property animation )和視圖動畫(view an...
    wenny826閱讀 2,361評論 0 2
  • 本文主要是針對android 中的動畫進(jìn)行詳細(xì)描述碗誉,并簡單分析原理召嘶;一、概述Android動畫分為三種:幀動畫(F...
    暮染1閱讀 788評論 0 0
  • 轉(zhuǎn)載:http://blog.csdn.net/yanbober/article/details/46481171...
    朝花夕拾不起來閱讀 686評論 0 0
  • 一般常用的android動畫有View Animation(視圖動畫)和Property Animation(屬性...
    JCJIE閱讀 427評論 0 2
  • 1 背景 不能只分析源碼呀哮缺,分析的同時也要整理歸納基礎(chǔ)知識弄跌,剛好有人微博私信讓全面說說Android的動畫,所以今...
    未聞椛洺閱讀 2,719評論 0 10