• 前言
  • 转场动画简介
  • 遇到的问题
    • 运行没效果
    • 点击返回键出现效果但是刚开始跳转的时候没有效果
    • 实现最终的效果
    • 遇到的其他的问题
  • 总结

前言

这几天项目的需求里有个在activity跳转的时候,要求头像平移到下一个activity,我一下就想到了使用activity的转场动画了,下面我们就简单的介绍下activity的转场动画以及遇到的问题&对应的解决办法。

转场动画简介

相信大家对于Activity的过度动画都很熟悉了,一般情况下我们直接使用

overridePendingTransition(enterAnim, exitAnim);

但是这种老旧、生硬的方式怎么能适合我们的MD风格的App呢!好在google在新的sdk中给我们提供了另外一种Activity的过度动画——ActivityOptions。并且提供了兼容包——ActivityOptionsCompat。ActivityOptionsCompat是一个静态类,提供了为数不多的几个方法,下面我们来罗列一下:

1.平移,跟我们的overridePendingTransition效果是一样的,从第二个和第三个参数就可以看出
ActivityOptionsCompat.makeCustomAnimation(Context context, int enterResId, int exitResId)2.将一个控件平滑的放大过渡到第二个activity,一般用于相册的具体照片的查看
ActivityOptionsCompat.makeScaleUpAnimation(View source,int startX, int startY, int startWidth, int startHeight)3.
ActivityOptionsCompat.makeThumbnailScaleUpAnimation(View source,Bitmap thumbnail, int startX, int startY)4.平滑的将一个控件平移的过渡到第二个activity
ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)5. 平滑的将多个控件平移的过渡到第二个activity
ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity,Pair<View, String>… sharedElements)

恩,就这5个方法可以调用,也就是说为我们提供了这么5中过度方式,在使用的时候我们需要在theme指定:

<style name="AppTheme" parent="Theme.AppCompat"><item name="android:windowContentTransitions">true</item>
</style>

ps:我们项目中要实现的功能就和第四个的效果是一样的

遇到的问题

运行没效果

知道使用第四个方法,我们就按照这个方法把代码添加到项目中,要过渡的两个控件也都添加了translationName属性,很高兴的以为问题就这样简单的解决了,但是理想是丰满的,现实是骨感的,真机测试没有出现我要的效果。

点击返回键出现效果,但是刚开始跳转的时候没有效果

在网上搜了很多帖子,最后看到stackoverflow有个帖子中有句话引起了我的注意,大概意思是你的手机系统版本得是5.0以上的,看到这个,我就换了公司的三星s6测试机,很忐忑的运行了程序,没有效果,但是点击返回键时出现了我想要的效果了。

实现最终的效果

于是我就自己新建了个demo测试一下这个转场动画,结果出乎意料的实现了效果,我就用这个demo和我的项目比对,发现代码没有差别,唯一的差别就是demo中的两个控件都是在activity的布局中的,但是我的项目中的第二个控件是listview的一个headerView中的,不在activity的布局文件中,我想是不是这个原因,结果经过的一番修改,终于是出现了我想要的结果了。

遇到的其他的问题

因为第二个控件是listView的header,所以要把header中的view都得放在list view上面,不能用addHeaderView的方式了,这就用到了Scrollview,自然的也就得解决Listview和ScrollView的冲突问题,还有就是进入第二个activity之后,scrollview不在最上面,而是现实list view的部分。下面给出解决办法:
1.继承listview,重写他的onMeasure()

@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,  MeasureSpec.AT_MOST);  super.onMeasure(widthMeasureSpec, expandSpec);  }

2.因为listview抢占了scrollview的焦点,所以进入页面才显示listview
在activity的代码中添加

mListView.setFocusable(false);

即可;
ps:在listview的布局文件中添加

android:focusable="false"

是没有效果的。
还有个方法就是设置scrollview滚动到顶部

mScrollView.smoothScrollTo(0,0);

总结

本篇博客的中心思想就是:
1.makeSceneTransitionAnimation必须运行在android5.0以上的系统才可以

2.要实现过度的两个控件必须都得在activity的布局文件中,使用include也行,但是不能用listview.addHeaderView 的形式使用

3.scrollview和listview的滑动冲突解决

4.焦点问题导致scrollview不在顶部

以上都是我自己的拙见,如果有问题的地方,请各位留言,我去改正,不要因为我的笔误或者是错误的思想误导了即将成神的你们。最后,希望可以帮助到和我遇到同样问题的同学们,祝大家天天开心,都成大神!

关于activity转场动画makeSceneTransitionAnimation没效果的问题的解决办法相关推荐

  1. android Activity转场动画makeSceneTransitionAnimation

    1.activity转场动画实现有很多,这里主要记录ActivityOptions实现转场动画. 1.makeSceneTransitionAnimation实现,网上很多说要添加下面这句代码 < ...

  2. 安卓Activity转场动画

    安卓Activity转场动画:两个Activity进行跳转的时候,转场动画 1,ActivityOptions 适合API21及安卓5.0以上版本 2,兼容类:ActivityOptionsCompa ...

  3. android 揭示动画,Android进阶设计 | 使用揭露动画(Reveal Effect)做一个丝滑的Activity转场动画...

    提笔之际(附总体思路) 最近跟几个小伙伴在实践一个项目,考虑到界面效果,我们决定使用揭露动画作为Activity的转场动画. 这里主要是我负责这部分的实现. 话说之前是没接触过的,关于具体的实现跟大体 ...

  4. Android Reveal圆形Activity转场动画

    一.效果 二.知识点 CircularReveal动画.透明主题.转场动画(非必须) 三.方案 假设有两个Activity A和B.Reveal圆形Activity转场动画效果先从A到B,那么基本方案 ...

  5. html打印预览首行缩进样式无效,css首行缩进没有效果的原因及解决办法

    css首行缩进没有效果的原因及解决办法 发布时间:2020-12-23 09:52:37 来源:亿速云 阅读:69 作者:小新 这篇文章将为大家详细讲解有关css首行缩进没有效果的原因及解决办法,小编 ...

  6. Android开发之Activity转场动画

    引子 相信开发过iOS的程序员都知道iOS ViewController之间的跳转动画非常多,很酷对不对?这让开发Android的羡慕不已,曾几何时,Android中的Activity跳转是何等的生硬 ...

  7. 【Android -- 动画】Activity 转场动画

    一.前言 在 Android 5.0 以后,Google 为 Activity 的转场设计了更加友好的动画效果. 转场动画(Activity Transition)基本介绍 Android 5.0 提 ...

  8. Activity转场动画

    小记:需求说要改改Launcher启动Activity时,Launcher和Activity跳转的动画,让跳转更自然. ...哔哩哔哩哔哩...经过小编一番百度之后发现, 发现几种方式 1.Activ ...

  9. activity 转场动画不生效_replugin插件化,插件转场动画失效的问题解决

    说明 随着应用功能的丰富,Android程序的安装包也逐渐变大,这成为应用程序现有框架下难以摆脱的瓶颈.所以引入了rePlugin插件化框架,将应用按功能拆分为插件,以此减小apk的大小并同时增加应用 ...

  10. vue 项目中使用svga格式动画图标效果 incorrect header check解决办法

    1. 什么是SVGA SVGA 是一种跨平台的开源动画格式,同时兼容 iOS / Android / Web.SVGA 除了使用简单,性能卓越,同时让动画开发分工明确,各自专注各自的领域,大大减少动画 ...

最新文章

  1. java实现快速排序
  2. MacOS开发必备工具brew,安装nginx反向代理,替代linux工具 apt-get和 yum...
  3. adb logcat通过包名过滤(dos命令find后跟变量)
  4. IntelliJ IDEA——连接Apache Hive时 “Database” Plugin错误[enabling autocommit is not supported.]解决方案
  5. 在C#2.0中使用Nullable可空类型(转帖)
  6. 从Client应用场景介绍IdentityServer4(一)
  7. python4发布_Python 3.4.1 发布
  8. 勤哲linux客户端,Excel在线编辑
  9. avue里面的select怎么设置默认值_mysql大量的waiting for table level lock怎么办
  10. 基于代理的数据库分库分表框架 Mycat实践
  11. 乘坐飞机时,有什么事情是机长和机上工作人员不想让乘客知道的?
  12. sqoop-1.4.7安装
  13. Anlink(电脑操控手机软件) v2.2.5官方版下载,推荐这两款
  14. 为啥扫描服务器端口无响应,服务器端口扫描工具
  15. CS0533隐藏继承的抽条成员/CS0534不实现继承的抽象成员
  16. 【Ubuntu18.04系统开启防火墙】
  17. 如何有效进行项目成本管理?
  18. 【前端面试题】—21道有关移动端的面试题
  19. 第六章 Caché 设计模式 原型模式
  20. 微信小程序--字体水平垂直居中

热门文章

  1. 仿微信雷达寻好友动画
  2. C++学习(四九二)cmake file的GLOB和GLOB_RECURSE
  3. 转载:C64x的GPIO中断——简单原理介绍
  4. mysql 检查配置_MYSQL 配置检查脚本
  5. pytest执行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
  6. 资源 | 11个免费矢量免抠素材网站
  7. HTML知识-CSS部分
  8. 程序员英文面试题及回答(带中文翻译)
  9. java模板beetl引擎_模板引擎-beetl
  10. 移动硬盘插入提示需要格式化RAW_使用驱动器X:中的光盘之前需要将其格式化