用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容
来源:互联网 发布:handpan软件 编辑:程序博客网 时间:2024/06/08 15:29
我之前写过一篇文章是讲解ActivityOption的api方法的(http://www.cnblogs.com/tianzhijiexian/p/4087917.html),当时吐槽各种动画不兼容,完全无视我们4.x或者2.x用户嘛,好在有开源库赖帮助我们实现动画。
ActivityOptionsICS
提供了和ActivityOptions、ActivityCompat基本一致的方法来实现相同的动画效果,总共有如下方法。
(1)public static ActivityOptionsCompatICS makeCustomAnimation(Context context,int enterResId, int exitResId)
参数:
enterId:进入动画的资源ID
exitId:退出动画的资源ID
设置自定义的Activity动画,出入的是动画资源的id。
这个方法和overridePendingTransition(R.anim.slide_bottom_in, android.R.anim.fade_out);十分类似,传入一个进入的动画和一个退出的动画即可
public void customAnim() { ActivityOptionsCompatICS options = ActivityOptionsCompatICS.makeCustomAnimation(this, R.anim.slide_right_in, R.anim.slide_bottom_out); ActivityCompatICS.startActivity(MainActivity.this, intent, options.toBundle()); }
(2)public static ActivityOptionsCompatICS makeScaleUpAnimation(View source, int startX, int startY,
int width, int height)
参数:
source:一个view对象,用户确定新activity启动的初始坐标
startX:新activity出现的初始X坐标,这个坐标是相对于source的左上角X坐标
startY:新activity出现的初始Y坐标,这个坐标相对于source的左上角Y坐标
width:新activity初始的宽度
height:新activity初始的高度
通过看源码可以很容易理解这些参数的意义
int[] pts = new int[2];//ps = position,目的得到当前view相对于屏幕的坐标 source.getLocationOnScreen(pts); // 设置起始坐标和起始宽高 opts.mStartX = pts[0] + startX; opts.mStartY = pts[1] + startY; opts.mWidth = width; opts.mHeight = height;
实现的效果是:新的Activity从某个位置以某个大小出现,然后慢慢拉伸渐变到整个屏幕
public void scaleUpAnim(View view) { ActivityOptionsCompatICS options = ActivityOptionsCompatICS.makeScaleUpAnimation(view, 0, 0, //拉伸开始的坐标 view.getMeasuredWidth(), view.getMeasuredHeight());//初始的宽高 ActivityCompatICS.startActivity(MainActivity.this, intent, options.toBundle()); }
(3)public static ActivityOptionsCompatICS makeThumbnailScaleUpAnimation(View source,
Bitmap thumbnail, int startX, int startY)
参数:
source:一个view对象,用来确定起始坐标
thumbnail:一个bitmap对象,新的activity将通过这个bitmap渐变拉伸出现,新的activity初始大小就是这个bitmap的大小
startX:新activity初始的X坐标,相对于source左上角的X来说的
startY:新的activity初始的Y坐标,相对于source左上角Y坐标来说的
效果是:一个bitmap慢慢从某个位置拉伸渐变新的activity
public void thumbNailScaleAnim(ImageView view) { view.setDrawingCacheEnabled(true); Bitmap bitmap = view.getDrawingCache(); ActivityOptionsCompatICS options = ActivityOptionsCompatICS.makeThumbnailScaleUpAnimation( view, bitmap, 0, 0); // Request the activity be started, using the custom animation options. ActivityCompatICS.startActivity(MainActivity.this, intent, options.toBundle()); //view.setDrawingCacheEnabled(false); }
(4)public static ActivityOptionsCompatICS makeSceneTransitionAnimation(Activity activity,
final View sharedElement,int sharedElementId)
参数:
activity:当前activity的对象
sharedElement:一个view对象,用来和新的activity中的一个view对象产生动画
sharedElemetId:新的activity中的view的Id,这个view是用来和原始activity中的view产生动画的
效果是:原始activity中的一个view随着新activity的慢慢启动而移动到新的activity中,实现补间动画
public void screenTransitAnim(View v,int id) { ActivityOptionsCompatICS options = ActivityOptionsCompatICS. makeSceneTransitionAnimation(this, v,id); ActivityCompatICS.startActivity(MainActivity.this, intent, options.toBundle()); }
(5)public static ActivityOptionsCompatICS makeSceneTransitionAnimation(Activity activity,
Pair<View, Integer>... sharedElements)
参数:
activity:当前的activity
sharedElements:Pair对象,上面的一个方法是实现单一view的动画,这里可以有多个view对象进行动画
screenTransitAnimByPair( Pair.create((View)orginalImageView, R.id.target_imageView), Pair.create((View)orginalTextView, R.id.target_textView), Pair.create((View)chromeIView, R.id.target_chrome_imageView));
@SuppressWarnings("unchecked") public void screenTransitAnimByPair(Pair<View, Integer>... views) { ActivityOptionsCompatICS options = ActivityOptionsCompatICS.makeSceneTransitionAnimation( MainActivity.this, views); ActivityCompatICS.startActivity(MainActivity.this, intent, options.toBundle()); }
- 用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容
- 用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容
- 用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容
- 用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容
- Android 使用ActivityOptions实现Activity转场动画
- 使用ActivityOptions动画共享组件的方式实现跳转Activity动画
- ActivityOptions过场动画
- Android ActivityOptions动画
- Android activity 转场动画ActivityOptions
- 你所不知道的Activity转场动画——ActivityOptions,activity转场动画
- 你所不知道的Activity转场动画——ActivityOptions
- 你所不知道的Activity转场动画——ActivityOptions
- 你所不知道的Activity转场动画——ActivityOptions
- 你所不知道的Activity转场动画——ActivityOptions
- 你所不知道的Activity转场动画——ActivityOptions
- 你所不知道的Activity转场动画——ActivityOptions
- Activity转场动画——ActivityOptions
- 使用ActivityOptions做Activity切换动画
- HDU 2010 水仙花数(水)
- 设置三个Slider控件,管理背景颜色,任意改变一个控件,背景颜色都会发生改变
- 字幕编解码器
- android工程下不能运行java main程序的解决办法
- 剑指Offer面试题3:二维数组中的查找
- 用开源项目ActivityOptionsICS让ActivityOptions的动画实现兼容
- 欢迎使用CSDN-markdown编辑器
- 作为码农,我们为什么要写作
- 实现atoi——从char*到int的转换
- yt练手1004输出前m大的数hash
- Cannot unwrap to requested type [javax.sql.DataSource]
- java Web项目启动 执行一个方法,执行一个清理工作
- google-play-services_lib添加不成功的解决方案
- iFrame跨域解决办法