我指的是在这里找到的扩展/折叠动画代码.

虽然这样做不好,动画不顺利.

我做一些登录代码.

public static void expand(final View v) {

v.measure(MeasureSpec.makeMeasureSpec(((View)v.getParent()).getWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(1024, MeasureSpec.AT_MOST));

final int targtetHeight = v.getMeasuredHeight();

v.getLayoutParams().height = 0;

v.setVisibility(View.VISIBLE);

Animation a = new Animation()

{

@Override

protected void applyTransformation(float interpolatedTime, Transformation t) {

v.getLayoutParams().height = interpolatedTime == 1

? LayoutParams.WRAP_CONTENT

: (int)(targtetHeight * interpolatedTime);

Log.i("CHEOK", "E v.getLayoutParams().height = " + v.getLayoutParams().height);

v.requestLayout();

}

将打印以下日志消息.

10-09 12:29:58.808: I/CHEOK(7874): E v.getLayoutParams().height = 0

10-09 12:29:58.808: I/CHEOK(7874): E v.getLayoutParams().height = 0

10-09 12:29:58.918: I/CHEOK(7874): E v.getLayoutParams().height = 11

10-09 12:29:59.015: I/CHEOK(7874): E v.getLayoutParams().height = 35

10-09 12:29:59.117: I/CHEOK(7874): E v.getLayoutParams().height = 64

10-09 12:29:59.215: I/CHEOK(7874): E v.getLayoutParams().height = 85

10-09 12:29:59.316: I/CHEOK(7874): E v.getLayoutParams().height = -2

10-09 12:29:59.406: I/CHEOK(7874): E v.getLayoutParams().height = -2

新的高度每100ms发生一次.所以动画的FPS大约是10fps

我想看看什么是理想的动画帧率.我删除v.requestLayout();.我得到以下记录.

10-09 12:32:06.547: I/CHEOK(8926): E v.getLayoutParams().height = 0

10-09 12:32:06.562: I/CHEOK(8926): E v.getLayoutParams().height = 0

10-09 12:32:06.605: I/CHEOK(8926): E v.getLayoutParams().height = 4

10-09 12:32:06.625: I/CHEOK(8926): E v.getLayoutParams().height = 7

10-09 12:32:06.644: I/CHEOK(8926): E v.getLayoutParams().height = 10

10-09 12:32:06.664: I/CHEOK(8926): E v.getLayoutParams().height = 14

10-09 12:32:06.679: I/CHEOK(8926): E v.getLayoutParams().height = 18

10-09 12:32:06.699: I/CHEOK(8926): E v.getLayoutParams().height = 22

10-09 12:32:06.715: I/CHEOK(8926): E v.getLayoutParams().height = 27

10-09 12:32:06.734: I/CHEOK(8926): E v.getLayoutParams().height = 32

10-09 12:32:06.750: I/CHEOK(8926): E v.getLayoutParams().height = 37

10-09 12:32:06.769: I/CHEOK(8926): E v.getLayoutParams().height = 42

10-09 12:32:06.785: I/CHEOK(8926): E v.getLayoutParams().height = 47

10-09 12:32:06.804: I/CHEOK(8926): E v.getLayoutParams().height = 52

10-09 12:32:06.828: I/CHEOK(8926): E v.getLayoutParams().height = 59

10-09 12:32:06.840: I/CHEOK(8926): E v.getLayoutParams().height = 62

10-09 12:32:06.863: I/CHEOK(8926): E v.getLayoutParams().height = 67

10-09 12:32:06.879: I/CHEOK(8926): E v.getLayoutParams().height = 71

10-09 12:32:06.894: I/CHEOK(8926): E v.getLayoutParams().height = 75

10-09 12:32:06.910: I/CHEOK(8926): E v.getLayoutParams().height = 79

10-09 12:32:06.929: I/CHEOK(8926): E v.getLayoutParams().height = 82

10-09 12:32:06.945: I/CHEOK(8926): E v.getLayoutParams().height = 85

10-09 12:32:06.965: I/CHEOK(8926): E v.getLayoutParams().height = 88

10-09 12:32:06.984: I/CHEOK(8926): E v.getLayoutParams().height = 89

10-09 12:32:07.000: I/CHEOK(8926): E v.getLayoutParams().height = 91

10-09 12:32:07.019: I/CHEOK(8926): E v.getLayoutParams().height = 91

10-09 12:32:07.039: I/CHEOK(8926): E v.getLayoutParams().height = -2

10-09 12:32:07.054: I/CHEOK(8926): E v.getLayoutParams().height = -2

每约20ms出现新的高度.所以动画的FPS大概是50fps

当然,我不能删除requestLayout,因为UI不会在屏幕上更新.

我在想,有没有什么改进可以做到,实现动画FPS关闭到50fps?我看到一些商业产品具有平滑的Expand / collapse示例.所以,我认为这是可以实现的.就这样,我不知道究竟如何.

我的布局代码如下:

android:clickable="true"

android:id="@+id/chart_linear_layout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="10dp"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:background="@drawable/dummy"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_margin="10dp"

android:orientation="horizontal">

android:layout_width="0dp"

android:width="0dp"

android:layout_weight="0.6"

android:layout_height="wrap_content"

android:gravity="left"

android:textSize="20sp"

android:textColor="#ff000000"

android:text="Summary chart" />

android:id="@+id/chart_price_text_view"

android:layout_width="0dp"

android:width="0dp"

android:layout_weight="0.4"

android:layout_height="wrap_content"

android:gravity="right"

android:textSize="20sp"

android:textColor="#ffF76D3C"

android:text="$2.99" />

android:visibility="gone"

android:id="@+id/chart_description_text_view"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:layout_marginBottom="10dp"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/currency_exchange_description"

android:textColor="#ff626262"

android:textSize="15sp" />

我希望在chart_description_text_view上执行流畅的动画

折叠(应用程式启动期间)

扩展(当用户点击它时)

Android自动伸展动画,android – 如何实现平滑的展开/折叠动画相关推荐

  1. android 折叠动画,Android:展开/折叠动画

    Android:展开/折叠动画 假设我有一个垂直linearLayout: [v1] [v2] 默认情况下,v1具有visibily = GONE. 我想用扩展动画展示v1并同时向下推v2. 我试过这 ...

  2. js 展开折叠动画原理,jquery的toggle切换效果

    效果图: 想法: jquery的展开折叠动画效果很好看,想自己实现一个,结果发现仅仅只靠css添加类和动画是不行,最开始的思路是折叠时候设置高度为0,展开时设置高度设置为auto,让他自己撑开,可是t ...

  3. Android自动伸展动画,Android:展开/折叠动画

    我看到这个问题很受欢迎,所以我贴出了我的实际解决方案.主要的优点是您不需要知道扩展的高度才能应用动画,并且一旦视图被展开,如果内容发生变化,它就会适应高度.对我来说很管用.public static  ...

  4. Android:展开/折叠动画

    假设我有一个带有以下内容的垂直linearLayout: [v1] [v2] 默认情况下,v1的可见值= GONE. 我想用扩展动画显示v1并同时按下v2. 我尝试过这样的事情: Animation ...

  5. android自动切换图片,Android应用中图片浏览时实现自动切换功能的方法详解

    先给最终效果图: 当我们在最下边的gallery中切换图片时,上面的大图片会自动切换,切换时有动画效果哦,很简单的一个程序,有待完善更多的功能! activity代码: package cn.com. ...

  6. android 自动 键盘,关于Android中的软键盘

    InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,使之能够在底部或者全屏显示.当我们点击输入框时,系 ...

  7. android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...

    本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...

  8. android自动创建快捷方式,Android开发之生成桌面快捷方式细则(原创)

    本文已独家授权 郭霖 ( guolin_blog) 公众号发布! 申明,标题里的快捷方式不是指开发人员使用频率极高的Ctrl+C和Ctrl+V:也不是IDE里Ctrl+D.Ctrl+F等常用快捷键.这 ...

  9. android自动夜间模式,Android实现日夜间模式的深入理解

    在本篇文章中给出了三种实现日间/夜间模式切换的方案,三种方案综合起来可能导致文章的篇幅过长,请耐心阅读. 1.使用 setTheme的方法让 Activity重新设置主题: 2.设置 Android ...

最新文章

  1. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
  2. 前端编程提高之旅(五)----写给大家看的css书
  3. 【迁移学习(Transfer L)全面指南】基于迁移学习完成图像分类任务(Pytorch)
  4. Spring MVC-10循序渐进之文件下载
  5. JavaWeb课程复习资料(八)——添加功能
  6. leetcode279 完全平方数
  7. java 多线程取一条记录_java多线程从队列中取出数据执行
  8. 【图说】Eclipse与Unity 3D协同工作
  9. STM32工作笔记0099---Pacman常用命令
  10. 桌面应用之electron开发
  11. 硬盘功率测试软件,CPU功耗检测
  12. slitaz linux 包管理器,SliTaz
  13. 一篇文章带你使用建模的思路解决泰迪杯-智慧政务问题(群众留言分类含代码)
  14. java 是否数字 正则_java使用正则判断是否是数字
  15. 苹果logo_“林芝苹果”LOGO图形标识公开评选
  16. 手把手教你实现百度基础地图+定位功能+设置中心点+添加Marker
  17. 台式电脑计算机硬盘清理,台式机的硬盘不够用怎么办 解决台式机电脑硬盘
  18. 疫情过后:表面一切照旧,暗里风起云涌!
  19. Linux下ll命令
  20. 2017高考 安防人做了这么多意想不到的

热门文章

  1. ir2104s的自举电容_电赛必备,IR2104S半桥驱动MOS管电机驱动板(PCB工程文件+磁悬浮代码)...
  2. window无法对计算机进行,电脑按Win+E快捷键无法打开“计算机”如何解决
  3. oracle 表空间写文件,Oracle表空间和数据文件管理
  4. 24点游戏c语言源代码6,C语言解24点游戏程序
  5. java 共享锁_Java锁--共享锁和ReentrantReadWriteLock
  6. 计算机的前端总线又称为,《计算机组成原理》复习资料
  7. 【sklearn学习】数据预处理和特征工程
  8. 大话“用户注册激活,忘记密码”发送邮件功能
  9. 移动namenode、secondarynamenode和jobTracker的节点(使其成为独立节点)
  10. 基于SSD的自动路径规划算法