Android 視圖動畫一(TweenAnimation)

  • Tween animation補間動畫,主要是通過對控件實現(xiàn)透明度(alpha)葫慎、尺寸(scale)摇幻、位置(translate)、旋轉rotate)進行改變,通過集合(set)的方式,實現(xiàn)連續(xù)的動畫效果
  • Frame animation

Tween動畫

1剪况、直接子類

  1. AlphaAnimation;控制一個對象的透明度播放的動畫
  2. RotateAnimation;控制一個對象旋轉的動畫
  3. ScaleAnimation;控制一個對象尺寸的動畫
  4. TranslateAnimation;控制一個對象位置的動畫

2探遵、監(jiān)聽器

animation.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
            
        }

        @Override
        public void onAnimationEnd(Animation animation) {

        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
 });

3番挺、屬性及其對應方法(所有子類都擁有)

  • android:detachWallpaper: 是否在壁紙上運行

  • android:duration: 動畫時長姆坚,單位毫秒。

  • android:fillAfter: 設置為true膏蚓,控件動畫結束時將保持動畫最后一幀(xml文件中瓢谢,需要設置在set便簽才生效)。

  • android:fillBefore: 設置為true驮瞧,控件動畫結束時將保持動畫開始第一幀(感覺很坑爹氓扛,設置true和false還有刪除這個屬性,效果都一樣)论笔。

  • android:fillEnabled: 效果和fillBefore一樣(同樣坑爹采郎,經(jīng)測試這個屬性可有可無,求打臉狂魔。

  • android:interpolator: 插值器蒜埋。設置動畫速率的變化(譬如加速、減速最楷、勻速等)整份,后面詳說待错。

  • android:repeatCount: 動畫重復次數(shù)

  • ndroid:repeatMode: 重復模式,有reverse(倒序)和restart(重復)兩種烈评,必須配合repeatCount一起使用

  • android:startOffset: 延遲一定毫秒之后才開始動畫

  • android:zAdjustment: 表示被設置動畫的內容在動畫運行時在Z軸上的位置火俄,有以下三個值

    • normal 默認值,保持內容在Z軸上的位置不變
    • top 保持在Z周最上層
    • bottom 保持在Z軸最下層

4讲冠、Interpolator

主要實現(xiàn)動畫的速率變化烛占,interpolator作為一個接口,然后抽象類BaseInterpolator實現(xiàn)Interpolator接口,在BaseInterpolator的子類就是android一系列Android提供的插值器沟启。

用法:

  1. 在XML的標簽下設置:android:interpolator=”@android:anim/accelerate_decelerate_interpolator”
  2. 在JAVA代碼中使用:animation.setInterpolator(new AccelerateDecelerateInterpolator());

以下提供android 所有的插值器

  • AccelerateDecelerateInterpolator:開始和結束速度慢,中間部分加速
  • AccelerateInterpolator:開始緩慢犹菇,然后加速
  • AnticipateInterpolator:開始后退德迹,然后前進
  • AnticipateOvershootInterpolator:開始后退,然后前進揭芍,直到超出目標值胳搞,再后退至目標值
  • BounceInterpolator:在結束時彈跳
  • CycleInterpolator:在指定的周期內重復動畫,速度變化遵循正弦規(guī)律
  • DecelerateInterpolator:開始加速称杨,結束緩慢
  • LinearInterpolator:勻速
  • OvershootInterpolator:前進肌毅,直到超出目標值,再后退至目標值
  • PathInterpolator: 根據(jù)路勁變化改變速率

5姑原、AnimationSet

在res/anim/.xml文件下實現(xiàn)多種動畫(透明度悬而、尺寸、位置锭汛、旋轉)

6笨奠、相關代碼實現(xiàn)

  • java代碼實現(xiàn)動畫

        private void alpha() {
          AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);
          alphaAnimation.setDuration(2000);
          alphaAnimation.setFillAfter(true);
          imv.setAnimation(alphaAnimation);
          //imv.startAnimation(alphaAnimation);
      }
    
      private void rote() {
          RotateAnimation rotateAnimation = new RotateAnimation(0, 720f);
          rotateAnimation.setDuration(2000);
          rotateAnimation.setFillAfter(true);
          imv2.setAnimation(rotateAnimation);
      }
      private void scale() {
          ScaleAnimation scaleAnimation = new ScaleAnimation(0f, 2f, 0f, 3f);
          scaleAnimation.setDuration(3000);
          scaleAnimation.setFillAfter(true);
          imv.setAnimation(scaleAnimation);
      }
    
      private void translate() {
          TranslateAnimation  animation = new TranslateAnimation(0f, 200f, 0f, 300f);
          animation.setDuration(3000);
          animation.setFillAfter(true);
          imv.setAnimation(animation);
    
      }
    
  • xml實現(xiàn)動畫

      <?xml version="1.0" encoding="utf-8"?>
      <set xmlns:android="http://schemas.android.com/apk/res/android"
          android:fillAfter="true"
          android:shareInterpolator="false">
          <scale
              android:duration="1500"
              android:fromXScale="1.0"
              android:fromYScale="1.0"
              android:interpolator="@android:anim/accelerate_decelerate_interpolator"
              android:pivotX="50%"
              android:pivotY="50%"
              android:toXScale="1.5"
              android:toYScale="0.5" />
      
          <set
              android:duration="2000"
              android:interpolator="@android:anim/accelerate_decelerate_interpolator"
              android:startOffset="1500">
      
              <scale
                  android:duration="1500"
                  android:fromXScale="1.5"
                  android:fromYScale="0.6"
                  android:interpolator="@android:anim/accelerate_decelerate_interpolator"
                  android:pivotX="50%"
                  android:pivotY="50%"
                  android:toXScale="0.0"
                  android:toYScale="0.0" />
      
              <rotate
                  android:fromDegrees="0.0"
                  android:pivotX="50%"
                  android:pivotY="50%"
                  android:toDegrees="-45" />
          </set>
      
      </set>
    
  • java中引用res文件

         private void animationSet(){
            Animation animation = AnimationUtils.loadAnimation(getActivity(), R.anim.animation_set);
            imv.startAnimation(animation);
    
        }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市唤殴,隨后出現(xiàn)的幾起案子般婆,更是在濱河造成了極大的恐慌,老刑警劉巖朵逝,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔚袍,死亡現(xiàn)場離奇詭異,居然都是意外死亡配名,警方通過查閱死者的電腦和手機啤咽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來段誊,“玉大人闰蚕,你說我怎么就攤上這事×幔” “怎么了没陡?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵涩哟,是天一觀的道長。 經(jīng)常有香客問我盼玄,道長贴彼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任埃儿,我火速辦了婚禮器仗,結果婚禮上,老公的妹妹穿的比我還像新娘童番。我一直安慰自己精钮,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布剃斧。 她就那樣靜靜地躺著轨香,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幼东。 梳的紋絲不亂的頭發(fā)上臂容,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音根蟹,去河邊找鬼脓杉。 笑死,一個胖子當著我的面吹牛简逮,可吹牛的內容都是我干的球散。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼散庶,長吁一口氣:“原來是場噩夢啊……” “哼沛婴!你這毒婦竟也來了?” 一聲冷哼從身側響起督赤,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嘁灯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后躲舌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丑婿,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年没卸,在試婚紗的時候發(fā)現(xiàn)自己被綠了羹奉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡约计,死狀恐怖诀拭,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情煤蚌,我是刑警寧澤耕挨,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布细卧,位于F島的核電站,受9級特大地震影響筒占,放射性物質發(fā)生泄漏贪庙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一翰苫、第九天 我趴在偏房一處隱蔽的房頂上張望止邮。 院中可真熱鬧,春花似錦奏窑、人聲如沸导披。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盛卡。三九已至,卻和暖如春筑凫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背并村。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工巍实, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哩牍。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓棚潦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親膝昆。 傳聞我的和親對象是個殘疾皇子丸边,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容

  • Animation Animation類是所有動畫(scale、alpha荚孵、translate妹窖、rotate)的基...
    四月一號閱讀 1,916評論 0 10
  • 最近工作比較清閑,所以想系統(tǒng)的復習和學習下自己比較短缺的知識收叶,所以骄呼。。判没。 程序運行效果圖: Android動畫主要...
    小沈新手閱讀 508評論 0 1
  • 1 背景 不能只分析源碼呀蜓萄,分析的同時也要整理歸納基礎知識,剛好有人微博私信讓全面說說Android的動畫澄峰,所以今...
    未聞椛洺閱讀 2,709評論 0 10
  • 安卓動畫目前共分為三種動畫逐幀動畫嫉沽、補間動畫和屬性動畫。 一俏竞、逐幀動畫(frame-by-frame animat...
    V1tas閱讀 423評論 0 1
  • 已經(jīng)是凌晨兩點半了绸硕,我覺得沒有比我昨天過的悲催了堂竟。可能我就是會在深夜里胡思亂想而且易把一些事物都想到壞事處臣咖。 即使...
    肉啊肉2閱讀 291評論 0 0