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());
可以看到進入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());
效果不太明顯
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());
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());
效果很不明顯吕世,只可以看到一閃而過的圖片
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動畫之視圖動畫的缺點和屬性動畫的引入