Material Designer的低版本兼容实现—— ActivityOptionsCompat
来源:互联网 发布:阿里巴巴php招聘 编辑:程序博客网 时间:2024/06/06 14:21
转自:http://www.cnblogs.com/tianzhijiexian/p/4087917.html
本文是对API中的方法做了介绍,如果想要看如何让这些方法兼容4.x或2.x可以看这篇文章:
用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容
新版的V4包中有了这个类—— ActivityOptionsCompat,我们可以通过这个类来启动activity和添加动画。但不幸的是所有的动画都没有给2.x用的,大部分动画也对4.x不兼容。我们就来看看是否让低版本也兼容这些动画效果。
好消息是这个类是兼容2.x的,通过这个类编写的嗲吗,虽然不能给2.x带来动画,但也能确保全版本稳定运行,不会需要我们判断版本。也就是说如果你给5.x平台做了动画,其他平台虽然不会执行动画,但仍旧可以稳定打开activity。下面我们通过远吗进行分析下这个类。
1.文档解释
(1)ActivityOptionsCompat.makeCustomAnimation(context, enterResId, exitResId)
简单做一个定制的动画,这个参数很简单,传入一个进入的动画的id,和移除动画的id即可
复制代码
//让新的Activity从一个小的范围扩大到全屏
ActivityOptionsCompat options =
ActivityOptionsCompat.makeCustomAnimation(this,
R.anim.slide_bottom_in, R.anim.slide_bottom_out);
startNewAcitivity(options);
复制代码
复制代码
private void startNewAcitivity(ActivityOptionsCompat options) { Intent intent = new Intent(this,DetailActivity.class); ActivityCompat.startActivity(this, intent, options.toBundle()); }
复制代码
这个我感觉没什么用处,类似于
Intent intent = new Intent(this,DetailActivity.class); startActivity(intent); overridePendingTransition(R.anim.slide_bottom_in, android.R.anim.fade_out);
还不如直接用这个全版本的overridePendingTransition呢
(2)ActivityOptionsCompat.makeScaleUpAnimation(source, startX, startY, startWidth, startHeight)
这个在4.x上有用,可以实现新的Activity从某个固定的坐标以某个大小扩大至全屏,我觉得效果挺不错的。
这个新Activity就是从根据那个图片的坐标来拉伸展示的,对于相册是很好的展示效果。
复制代码
private void scaleUpAnimation(View view) {
//让新的Activity从一个小的范围扩大到全屏
ActivityOptionsCompat options =
ActivityOptionsCompat.makeScaleUpAnimation(view, //The View that the new activity is animating from
(int)view.getWidth()/2, (int)view.getHeight()/2, //拉伸开始的坐标
0, 0);//拉伸开始的区域大小,这里用(0,0)表示从无到全屏
startNewAcitivity(options);
}
复制代码
private void startNewAcitivity(ActivityOptionsCompat options) {
Intent intent = new Intent(this,DetailActivity.class);
ActivityCompat.startActivity(this, intent, options.toBundle());
}
(3)ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElement, sharedElementName)
当你需要当前界面中的某个元素和新界面中的元素有关时,你可以使用这个动画。效果很赞~!
这个图片就是通过动画和上一个界面的图片进行了联系。
要使用这个方法就必须给两个不同Activity的中的布局元素设定同样的一个android:transitionName,然后还需要一个标志来告诉Window执行动画,因为这个只是在5.x上有效,不是本文的讨论范围。详细看官方文档即可。
标志:etWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
也可以参考文章:
http://blog.csdn.net/a396901990/article/details/40187203
http://blog.jobbole.com/77015/
(4)ActivityOptionsCompat.makeSceneTransitionAnimation((Activity arg0, Pair
- Material Designer的低版本兼容实现—— ActivityOptionsCompat
- Material Designer的低版本兼容实现—— ActivityOptionsCompat
- Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat
- Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat
- ActivityOptionsCompat--Material Designer的低版本兼容实现
- Material Designer的低版本兼容实现
- Material Designer — ActivityOptionsCompat
- Material Designer的代码实现(五)—— ActivityOptionsCompat
- Material Designer的低版本兼容实现(一)—— 简介 & 目录
- Material Designer的低版本兼容实现(四)—— ToolBar
- Material Design的低版本兼容实现——View & Animation
- 兼容低版本的 Material Design ProgressBar
- 初级——应用程序向低版本兼容的问题
- 兼容低版本 IE 的 JScript 5.5 实现
- 在低版本android系统上实现Material设计应用
- 在低版本android系统上实现Material设计应用
- 在低版本android系统上实现Material设计应用
- 在低版本android系统上实现Material设计应用
- ViewPager 入门到精通(一)
- 【Leetcode】Linked List Random Node
- 大数据培训又开课了
- Android 3d TOS Launcher 之桌面图标主题加框规格化
- poj 1410 Intersection 线段与矩形的关系
- Material Designer的低版本兼容实现—— ActivityOptionsCompat
- 谈谈Processing 3D世界 四
- 三个命令解决ASTGO服务器重启后各种问题
- bzoj 2038 [2009国家集训队]小Z的袜子(hose)
- SQL 常用语句 DDL,DML,DCL
- Mutex的lock(), unlock(), tryLock()函数介绍
- 关于Excel导入导出的总结(JXL)
- openges绘制可旋转的球体-增加光照效果之散射光
- 基础学习笔记之opencv(24):imwrite函数的使用