Android(安卓)显示图片的时候设置转换动画
显示图片的时候设置转换动画
在点击一个图片的时候,通常会新开一个界面专门显示这个图片,一般会干脆设置一个新的Activity,读取这个图片资源。
但是我们希望能在Activity转换的时候有一个动画效果,就是图片的位移和拉伸
没错,就像微信里面那样
其实,大部分APP都会这样,没有哪个开发者连这个都想不到。
如果两个图片有相同的内容,那么Android提供了一种转换方法来避免开发者手动设置,这类动画如果手动设置是很麻烦的
首先,在style
里面设置如下,以启用转换动画,并且确定动画设置的文件
<item name="android:windowContentTransitions">trueitem><item name="android:windowSharedElementEnterTransition"> @transition/show_image_transitionitem><item name="android:windowSharedElementExitTransition"> @transition/show_image_transitionitem>
这里,就确定在show_image_transition.xml文件里会定义转换动画
在res文件夹下新建一个transition
的文件夹,创建如上所述文件
定义内容如下
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeImageTransform/> <changeBounds/>transitionSet>
这里面的两个的意义分别是
图片转换变化
位置变化
第一个设置会让图片大小平滑转换
第二个会让图片位置平滑转换
没错,就是我们通常看到的那样
更多的设置看官方文档
transition
定义定制动画
然后,在两个需要转换的VIEW里面设置一个相同的属性
android:transitionName="image_test"
这表示,会利用到一个称之为image_test
的转换,下面我们会用到这个名称。
因为如果有不同的转换设置,可以在转换的时候手动选择用哪一个。
接下来,需要在java文件中设置一下。
平时,转换一个activity我们会这样
Intent intent = new Intent(this,ShowPicActivity.class);startActivity(intent);
如果需要转换动画,就需要这样
Intent intent = new Intent(this,ShowPicActivity.class);ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,imageView,"image_test");startActivity(intent,options.toBundle());
startActivity()
方法增加了一个设置,这个设置定义了转换动画
makeSceneTransitionAnimation()
的第三个参数,就是刚才我们定义的名称
这样,就实现了通常看到的图片转换动画
官方文档中有这样一个说明,有些时候可能会需要。
以多个共享元素启动一个操作行为
如果要在两个拥有多个共享元素的操作行为之间安排场景转换动画,
请以 android:transitionName 属性
(或在两个操作行为中使用 View.setTransitionName() 方法)定义共享元素,
并以下列方式创建一个 ActivityOptions 对象:ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create(view1, “agreedName1”),
Pair.create(view2, “agreedName2”));
这些都是最基本的设置,通常我们需要一些复杂的转换动画,官方文档都有介绍,可以仔细参阅
更多相关文章
- 2019-06-11
- Android透明状态栏——你要的只是几个方法
- [UI控件问题] android屏幕自适应 android 属性
- Android之根布局动态加载子布局时边距设置无效问题
- Android(安卓)用ViewFlipper简单实现广告滚动条
- Android——实现全国省市区地区选择
- Android(安卓)开发环境配置+环境变量+模拟器上的调试设置Dev Too
- Android(安卓)overlay 学习 二 Android(安卓)camera preview and
- Android新建项目与简易Button事件