主要内容使用系统提供的 API 实现共享动画

在实现过程中遇到的问题图片点击和关闭之后会出现短暂的黑屏问题实现的动画效果如下:

共享动画.gif

具体实现这个效果是在两个页面之间的切换动画,既然是两个页面之间的切换,那么我们页面跳转代码,设置跳转动画,即可。

页面跳转的代码如下:Intent intent = new Intent(context, BigImageActivity.class);

intent.putExtra(AppConfig.IMAGE_URL,imageUrl);// 添加跳转动画context.startActivity(intent,

ActivityOptionsCompat.makeSceneTransitionAnimation(

(Activity) context,

shareImage,

context.getString(R.string.share_pic_str))

.toBundle());

可以看到这里用到了ActivityOptionsCompat.makeSceneTransitionAnimation,这个就是页面跳转的转场动画。

通过查看源码可以知道这个转场动画只支持 Android 5.0以上, 它的源码实现如下:public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity,

View sharedElement, String sharedElementName) {        if (Build.VERSION.SDK_INT >= 21) {            return createImpl(ActivityOptions.makeSceneTransitionAnimation(

activity, sharedElement, sharedElementName));

}        return new ActivityOptionsCompat();

}    // 上面的 makeSceneTransitionAnimation 方法的实现

public static ActivityOptions makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName) {        throw new RuntimeException("Stub!");

}    // 上面的 makeSceneTransitionAnimation 方法的另一个实现 ,可以看出是共享动画是支持多个视图的

@SafeVarargs

public static ActivityOptions makeSceneTransitionAnimation(Activity activity, Pair... sharedElements) {        throw new RuntimeException("Stub!");

}第一个参数:上下文

第二个参数:转场动画作用的 View 控件

第三个参数:共享字符串,在xml页面布局中定义

第二个参数这里是ImageView控件,第三个参数是自己定义的字符串,这里是share_image_view。

那么在布局代码中的实现如下:<?xml  version="1.0" encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/iv_grid_welfare"

android:layout_width="match_parent"

android:layout_height="250dp"

android:scaleType="centerCrop"

android:transitionName="@string/share_str"/>

大图页面布局如下:<?xml  version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".big_image.BigImageActivity">

android:id="@+id/iv_big_image"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:scaleType="centerCrop"

android:transitionName="@string/share_str"/>

从下一个页面返回关闭共享动画

使用 finishAfterTransition(); 替换 finish() 关闭页面。

以上就实现了两个页面之间跳转的共享动画效果。

但是动画从大图页面返回时会出现黑屏或者白屏。这是什么原因呢?

这个原因是由于由于我们Activity设置的主题决定的,在 AndroidManifest.xml中找到我们设置的主题,修改为透明主题即可,Theme代码如下:

android:name=".big_image.BigImageActivity"

android:theme="@style/BigImageTranslateTheme" />

true

true

@android:color/transparent

作者:_龙衣

链接:https://www.jianshu.com/p/c564f099cd4e

android 图片查看动画,Android 共享动画实现点击列表图片跳转查看大图页面相关推荐

  1. android:使用TextView展示H5文本(含关键字点击和图片)

    一.需求描述 使用TextView展示H5文本,文本中包含关键词和图片,在H5文本中只有关键词会标红,在TextView中展示出来的关键词需要加点击事件. 具体如下图: 使用TextView展示H5文 ...

  2. java绘制图片验证码两种方式实现,点击【图片】刷新和点击【看不清换一张】刷新

    转载地址:https://blog.csdn.net/Jiang_Rong_Tao/article/details/78063295 点击打开链接 1.(看不清,换一张),点击刷新验证码 <im ...

  3. 微信点击关注图片(点击上方蓝色字关注图标)

    标签: 微信关注图片 微信点击关注图标 微信平台求关注图片 微信求关注动态图片 微信求关注图标素材   微信点击关注图片(点击上方蓝色字关注图标) 微信求关注图标素材,微信求关注图片,微信求关注,微信 ...

  4. android图片缩放动画,Android动画共享元素(例列表图片放大到详情图片动画)

    一.什么是共享元素 简单来说共享元素就是两个Activity中都拥有此元素,在第二个Activity中进行强调而展示一些的动画效果.例如圆按钮的漂移动画.图片的放大动画. 二.为什么使用共享元素 主要 ...

  5. android图片缩放动画,Android开发笔记——点击查看大图过渡动画与图片缩放与移动...

    从一个activity到另一个activity的过渡 1.小图点击事件代码@Override public void onClick(View view) { switch (view.getId() ...

  6. android 元素共享动画,android转场动画--共享元素(Shared Element)

    什么是共享元素呢?可以理解为当页面跳转是,看起来一个View属于界面A又属于界面B. 看一下下边这个效果: 在这个转场动画中,图片和文字都是共享元素,具体怎么实现这种效果呢? Step1 首先需要先在 ...

  7. android 延时播放动画,HollyTransition: 让APP丝滑般流畅:深入解读Android过渡动画Transition. 共享元素动画、场景动画、过场动画、延时动画...

    HollyTransition 零.导读 深入解读Android过渡动画Transition: 页面切换动画(过场动画) 共享元素动画 延时动画 场景动画 一.Transition前世今生 为了支持各 ...

  8. android 图片预览动画,Android实现仿Windows7图片预览窗格效果

    本实例将显示类似于windows7提供的图片预览窗格效果,单击任意一张图片,可以在右侧显示该图片的预览效果. 效果如图所示: 具体实现方法: res/layout/main.xml: android: ...

  9. android imageview图片旋转动画,Android 安卓动画 属性动画 - 旋转动画

    引入 属性动画的出现,弥补了补间动画的不足之处,补间动画,只是改变了表面上的东西,但是其中属性并未改变,而属性动画相反,改变了表面上的东西,并且也更改了其属性. 类:ObjectAnimator 用于 ...

最新文章

  1. powerbi和python区别_PowerBI和Python关于数据分析的对比
  2. Java 8开发的4大顶级技巧
  3. [导入]韩语基本会话
  4. php 做更新进度条,PHP exec()后更新Bootstrap进度条
  5. Python爬虫基础(三)urllib2库的高级使用
  6. 嵌入式c语言移植,嵌入式C语言位操作的移植方法
  7. POJ 1236 Network of Schools(强连通 Tarjan+缩点)
  8. 中国电子银行网-互联网金融第一大网站
  9. x86/x64编程基础
  10. HackFifteen 移除背景以提升Activity启动速度
  11. web前端的兼容性问题总结
  12. Http头部和状态码
  13. Windows不同压缩软件、压缩算法、压缩率详细对比测试与选择
  14. matlab小波分析
  15. 中国止血分析仪行业市场供需与战略研究报告
  16. Python模拟键盘输入(附Python 键位码表)
  17. html——简单文章发布html页面及富文本编辑器wangEditor的使用
  18. 创建Scrapy项目报错 UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 19
  19. 50个BA分析工具第五个-Business Model Cavans
  20. mindray心电监护仪使用说明_监护仪使用说明

热门文章

  1. java parsedouble valueof_java String.valueOf() 方法的使用
  2. java 定时删除_Java编写定时删除文件程序
  3. linux下 面向对象语言,人工智能(AI)程序设计(面向对象语言)PDF+PPT与习题等...
  4. 一个aov网用邻接矩阵表示_关注讲述我和朱婷7年7个故事,见证一个明星代表的诞生...
  5. 注意:python flask 里image文件 css文件 html文件都必须有固定存放位置!
  6. 运行pip list报错:Fatal error in launcher: Unable to create process using...python\Scripts\pip.exe list
  7. python 如何获取数组(列表)长度? len()
  8. SpringBoot @Cacheable缓存注解的使用
  9. program files(x86)可以移到d盘吗_做完开放式厨房,你后悔了吗,无墙的隔断设计让家更多层次感...
  10. mysql 备份大表 存储过程_mysql批量备份表的存储过程写法