ActivityCompat使用
来源:互联网 发布:哪个电视直播软件最好 编辑:程序博客网 时间:2024/05/17 07:28
今天在查看资料的时候看到了ActivityCompat这个类来启动Activity,ActivityCompat是v4包里新加的一个类,打开了看了看代码:
<span style="font-family:SimSun;font-size:14px;">public static void startActivity(Activity activity, Intent intent, @Nullable Bundle options) { if (Build.VERSION.SDK_INT >= 16) { ActivityCompatJB.startActivity(activity, intent, options); } else { activity.startActivity(intent); } }</span>
判断了版本是否大于16,因为只有16以上才会支持
<span style="font-family:SimSun;font-size:14px;">startActivity(intent, options);</span>这也为我们解决了低版本适配的问题。但是ActivityCompat最主要的作用是我们可以通过这个类来启动activity和添加动画。但不幸的是所有的动画都没有给2.x用的,大部分动画也对4.x不兼容。好消息是这个类是兼容2.x的,通过这个类编写的嗲吗,虽然不能给2.x带来动画,但也能确保全版本稳定运行,不会需要我们判断版本。也就是说如果你给5.x平台做了动画,其他平台虽然不会执行动画,但仍旧可以稳定打开activity。
下面看看ActivityOptionsCompat(ActivityCompat通过ActivityOptionsCompat设置动画效果)所带的方法:
1、ActivityOptionsCompat.makeCustomAnimation(context, enterResId, exitResId):
//让新的Activity从一个小的范围扩大到全屏 ActivityOptionsCompat options = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.slide_bottom_in, R.anim.slide_bottom_out); startNewAcitivity(options);作用类似于:
overridePendingTransition(R.anim.slide_bottom_in, android.R.anim.fade_out);
2、ActivityOptionsCompat.makeScaleUpAnimation(source, startX, startY, startWidth, startHeight)
这个在4.x上有用,可以实现新的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)表示从无到全屏 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/
NewsBean news = mAdapter.getItem(position); Intent intent = new Intent(getActivity(), NewsDetailActivity.class); intent.putExtra("news", news); View transitionView = view.findViewById(R.id.ivNews); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), transitionView, getString(R.string.transition_news_img)); ActivityCompat.startActivity(getActivity(), intent, options.toBundle());<span id="Label3"><span id="Label3"></span></span><span id="Label3"></span>
在NewsDetailActivity的布局文件会有这样的代码:
<ImageView android:id="@+id/ivImage" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" android:transitionName="@string/transition_news_img" android:scaleType="centerCrop" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7" />
4、ActivityOptionsCompat.makeSceneTransitionAnimation((Activity arg0, Pair<View, String>... arg1)
这个方法用于多个元素和新的Activity相关的情况,注意下第二个参数Pair这个键值对后面有...,标明是可以传入多个Pair对象的。
5、ActivityOptionsCompat.makeThumbnailScaleUpAnimation(source, thumbnail, startX, startY)
这个方法可以用于4.x上,是将一个小块的Bitmpat进行拉伸的动画。
- ActivityCompat使用
- ActivityCompat
- ActivityCompat.requestPermissions报错解决办法
- Android 6.0 ActivityCompat权限声明
- Android M(6.0)以下 ActivityCompat.requestPermissions不会弹框
- android关于6.0权限 ActivityCompat.requestPermissions找不到问题
- 使用
- 使用
- 使用
- 使用
- 使用
- 使用
- 使用++,--
- 使用$@ $!
- 使用
- SoftICE使用(指令使用)
- 使用GraphEdit使用
- 使用HtmlParser使用心得
- java调用webservice的方法
- android 从java到C层文件读取流程
- Cuava字符串处理:分割,连接,填充
- Openssl CA证书生成以及双向认证,及windows系统证书批量导出,android cer转bks
- LintCode 143. Sort Colors II
- ActivityCompat使用
- MongoDB 基础
- PHP输出json数据时中文不进行unicode编码的几种方法总结
- android studio 工具使用的常见问题
- Android创建桌面快捷方式
- springMVC上传
- Python学习-机器学习实战-ch07 AdaBoost
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- java中的并发工具类