显示图片的时候设置转换动画

在点击一个图片的时候,通常会新开一个界面专门显示这个图片,一般会干脆设置一个新的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”));

这些都是最基本的设置,通常我们需要一些复杂的转换动画,官方文档都有介绍,可以仔细参阅

更多相关文章

  1. 2019-06-11
  2. Android透明状态栏——你要的只是几个方法
  3. [UI控件问题] android屏幕自适应 android 属性
  4. Android之根布局动态加载子布局时边距设置无效问题
  5. Android(安卓)用ViewFlipper简单实现广告滚动条
  6. Android——实现全国省市区地区选择
  7. Android(安卓)开发环境配置+环境变量+模拟器上的调试设置Dev Too
  8. Android(安卓)overlay 学习 二 Android(安卓)camera preview and
  9. Android新建项目与简易Button事件

随机推荐

  1. Android:属性scaleType与图片的显示
  2. Android(安卓)Studio Git初体验
  3. Android(安卓)Log系统详解
  4. 【Android游戏开发十六】Android(安卓)Ge
  5. Android最火的框架系列(三)JiaoZiVideoPlay
  6. Android单元测试最简单使用
  7. 【Android】消息机制应用
  8. Android之基于HTTP协议的通信详解
  9. Android之旅---广播(BroadCast)
  10. [置顶] Android调试工具之adbs