Android動畫之ActivityOptionsCompat概述

ActivityOptionsCompat概述

Android動畫之Activity切換動畫overridePendingTransition實現(xiàn)和Theme Xml方式實現(xiàn)
這里只是簡單介紹ActivityOptionsCompat的使用后面文章會有更具體講解氧枣。

利用overridePendingTransition實現(xiàn)轉(zhuǎn)場動畫可以在android2.0開始使用,google在Android5.0提出了MD的設(shè)計風格,并擴充了Activity的轉(zhuǎn)場動畫渡讼,利用ActivityOptions和ActivityOptionsCompat可以實現(xiàn)新風格的轉(zhuǎn)場動畫。ActivityOptionsCompat是ActivityOptions的兼容包析二,雖然是兼容包但內(nèi)部有的動畫風格在5.0以下的版本依然不支持冷守,只不過堅持在低版本使用ActivityOptionsCompat的動畫不會出錯,所以下面會重點講解ActivityOptionsCompat颖榜。

前面講解了利用ActivityOptionsCompat實現(xiàn)了共享元素動畫棚饵,請看 共享元素動畫

ActivityOptionsCompat 主要用于生成Context.startActivity(Intent, Bundle) 所需要的 options Bundle 再配合其他方法實現(xiàn)轉(zhuǎn)場動畫。

注意:
要使用新的過渡動畫需要在style中設(shè)置windowContentTransitions為true掩完,作用是開啟Transition動畫:
<item name="android:windowContentTransitions">true</item>
或者利用代碼:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
必須要添加在super.onCreate(savedInstanceState)之前

2 ActivityOptions 提供的靜態(tài)方法噪漾,實現(xiàn)切換效果

提供的靜態(tài)方法:

  • makeCustomAnimation(Context context, int enterResId, int exitResId)
  • makeClipRevealAnimation (View source, int startX, int startY, int width, int height)
  • makeScaleUpAnimation(View source, int startX, int startY, int width, int height)
  • makeThumbnailScaleUpAnimation(View source, Bitmap thumbnail, int startX, int startY)
  • makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)
  • makeSceneTransitionAnimation(Activity activity, Pair...<View, String> sharedElements)

makeCustomAnimation(Context context, int enterResId, int exitResId)

用戶自定義動畫,指定進入和退出動畫且蓬,api16開始支持
參數(shù)說明:
enterResId:Activity進入動畫資源id
exitResId:Activity退出動畫資源id

代碼示例:從Main8Activity啟動Main7Activity欣硼,然后從Main7Activity回到Main8Activity

ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeCustomAnimation(Main8Activity.this, R.anim.translate_left_in, R.anim.translate_right_out);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
image

可以看到進入Main7Activity時Main8Activity和Main7Activity的動畫都執(zhí)行了。

makeClipRevealAnimation (View source, int startX, int startY, int width, int height)

從一個view的剪切區(qū)域放大然后打開新的Activity恶阴,Api23開始支持诈胜,
參數(shù)說明:
startX,startY:區(qū)域起點,利用source作為原點
width冯事,height:區(qū)域?qū)捀?/p>

ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeClipRevealAnimation(gongxiang, 30,30,50,50);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
image

效果不太明顯

makeScaleUpAnimation(View source, int startX, int startY, int width, int height)

放大一個view焦匈,然后顯示新的Activity
參數(shù)說明:
view:放大的view
startX,startY:從哪里開始縮放昵仅,以source為原點
width缓熟,height:新的activity從多大開始放大,如果是0,0則表示從最小開始摔笤。

ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeScaleUpAnimation(gongxiang, gongxiang.getWidth() / 2, gongxiang.getHeight() / 2, 0, 0);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
image

makeThumbnailScaleUpAnimation(View source, Bitmap thumbnail, int startX, int startY)

放大一張圖片够滑,然后打開activity
參數(shù)說明
source:參考原點
thumbnail:要放大的圖片
startX,startY:從哪里開始放大,以source為坐標原點

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.compositedst1);
ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeThumbnailScaleUpAnimation(gongxiang,bitmap ,300,500);
Intent intent = new Intent(Main8Activity.this, Main7Activity.class);
startActivity(intent,activityOptionsCompat.toBundle());
image

效果很不明顯吕世,只可以看到一閃而過的圖片

makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)

makeSceneTransitionAnimation(Activity activity, Pair...<View, String> sharedElements)
參考共享元素動畫文章
共享元素動畫

使用ActivityOptionsCompat之后雖然感覺很新奇彰触,但是除了共享元素動畫之外其他的動畫設(shè)置都很受限,后面會介紹Transition說明新的利用Transition自定義進入寞冯,退出動畫的方式渴析。

Animation動畫概述和執(zhí)行原理
Android動畫之補間動畫TweenAnimation
Android動畫之逐幀動畫FrameAnimation
Android動畫之插值器簡介和系統(tǒng)默認插值器
Android動畫之插值器Interpolator自定義
Android動畫之視圖動畫的缺點和屬性動畫的引入
Android動畫之ValueAnimator用法和自定義估值器
Android動畫之ObjectAnimator實現(xiàn)補間動畫和ObjectAnimator自定義屬性
Android動畫之ObjectAnimator中ofXX函數(shù)全解析-自定義Property,TypeConverter吮龄,TypeEvaluator
Android動畫之AnimatorSet聯(lián)合動畫用法
Android動畫之LayoutTransition布局動畫
Android動畫之共享元素動畫
Android動畫之ViewPropertyAnimator(專用于view的屬性動畫)
Android動畫之Activity切換動畫overridePendingTransition實現(xiàn)和Theme Xml方式實現(xiàn)
Android動畫之ActivityOptionsCompat概述
Android動畫之場景變換Transition動畫的使用
Android動畫之Transition和TransitionManager使用
Android動畫之圓形揭露動畫Circular Reveal
Android 動畫之 LayoutAnimation 動畫
Android動畫之視圖動畫的缺點和屬性動畫的引入

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俭茧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子漓帚,更是在濱河造成了極大的恐慌母债,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毡们,居然都是意外死亡迅皇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門衙熔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來登颓,“玉大人,你說我怎么就攤上這事红氯】蛄” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵痢甘,是天一觀的道長喇嘱。 經(jīng)常有香客問我,道長塞栅,這世上最難降的妖魔是什么者铜? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮放椰,結(jié)果婚禮上作烟,老公的妹妹穿的比我還像新娘。我一直安慰自己砾医,他們只是感情好俗壹,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藻烤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪头滔。 梳的紋絲不亂的頭發(fā)上怖亭,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機與錄音坤检,去河邊找鬼兴猩。 笑死,一個胖子當著我的面吹牛早歇,可吹牛的內(nèi)容都是我干的倾芝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼箭跳,長吁一口氣:“原來是場噩夢啊……” “哼晨另!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谱姓,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤借尿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體路翻,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡狈癞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茂契。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝶桶。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掉冶,靈堂內(nèi)的尸體忽然破棺而出真竖,到底是詐尸還是另有隱情,我是刑警寧澤郭蕉,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布疼邀,位于F島的核電站,受9級特大地震影響召锈,放射性物質(zhì)發(fā)生泄漏旁振。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一涨岁、第九天 我趴在偏房一處隱蔽的房頂上張望拐袜。 院中可真熱鬧,春花似錦梢薪、人聲如沸蹬铺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甜攀。三九已至,卻和暖如春琐馆,著一層夾襖步出監(jiān)牢的瞬間规阀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工瘦麸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谁撼,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓滋饲,卻偏偏與公主長得像厉碟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屠缭,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

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