`

关于Android animation的算法(参考SlidingDrawer)

阅读更多
Animation的算法,通常都会有一个时间点,画到那个时间点为止,而不是用画1pixel*pixel去得到animation的总时间。

比如说animation的velocity是2000px/s, 那么如果画出的高度是400px,所需的时间就是0.2secs
在这0.2secs内要画完,同时SlidingDrawer有设定16ms/frame,所以SlidingDrawer会是每16ms画一次,每次画的时候看距离0.2s还有百分之多少就画多少,直到0.2s到了为止。

如果CPU够快的话,它在0.2s内可以画200ms/16ms/frame = 12次,按代码来看,SlidingDrawer会发delay message(delay 16ms)给自己的ui thread,如果CPU Loading比较重,那么可能无法在16ms后开始画,所以会延时更久,比如只能画6次,然而在0.2s后就会画完,只是画的次数较少,这样的画,SlidingDrawer拉出来感觉就会不是那么的流畅。画的次数越多,越流畅。

总之,Android的Animation会因为CPU Loading重而fps变低,但是Animation的总时间不会变。

SlidingDrawer Velocity的算法如下:
private void incrementAnimation() {
        long now = SystemClock.uptimeMillis();
        float t = (now - mAnimationLastTime) / 1000.0f;                   // ms -> s
        final float position = mAnimationPosition;
        final float v = mAnimatedVelocity;                                // px/s
        final float a = mAnimatedAcceleration;                            // px/s/s
        mAnimationPosition = position + (v * t) + (0.5f * a * t * t);     // px
        mAnimatedVelocity = v + (a * t);                                  // px/s
        mAnimationLastTime = now;                                         // ms
    }


具体参考 frameworks\base\core\java\android\widget\SlidingDrawer.java
0
0
分享到:
评论

相关推荐

    Android的SlidingDrawer范例程序

    总之,`Android的SlidingDrawer范例程序`是一个深入探讨Android UI组件和触摸事件处理的实例,对于提升应用的用户体验具有很高的参考价值。通过学习这个范例,开发者不仅可以掌握`SlidingDrawer`的基本用法,还能...

    Android UI开发——SlidingDrawer 抽屉效果

    今天我们要讨论的是一个经典的Android UI组件——SlidingDrawer,它提供了一种抽屉式的交互效果,常用于隐藏和显示额外的信息或者功能区域。SlidingDrawer的使用使得界面更加简洁,同时也增加了用户的探索乐趣。 ##...

    Android自带SlidingDrawer实例

    在Android开发中,SlidingDrawer是系统提供的一种滑动抽屉控件,它允许开发者将内容以抽屉的形式从屏幕边缘滑出,通常用于隐藏不常用但必要的功能或信息。这个实例是专为初学者设计的,展示了如何使用SlidingDrawer...

    android控件SlidingDrawer的学习应用

    在Android开发中,SlidingDrawer控件是一种常用的交互元素,它允许用户通过滑动手势从屏幕边缘拉出或隐藏一个抽屉式视图。这个控件在早期版本的Android API中广泛使用,但在API Level 17之后逐渐被更灵活的滑动面板...

    Android-SlidingDrawer一个Android滑动抽屉支持ListViewScrollViewRecyclerView

    在Android应用开发中,SlidingDrawer控件是一个非常实用的组件,它允许用户通过手势从屏幕边缘滑出隐藏的内容,通常用于实现类似抽屉的效果。本文将深入探讨Android的SlidingDrawer及其在不同场景下的应用,包括与...

    android slidingdrawer完整包

    滑动抽屉(SlidingDrawer)是Android早期版本中用于实现侧滑菜单的一种组件,它模仿了物理抽屉从屏幕边缘滑出和隐藏的效果。在Android SDK 1.5(API Level 3)中,SlidingDrawer是系统提供的原生控件,但随着Android...

    Android SlidingDrawer抽屉效果

    在Android开发中,SlidingDrawer是早期用于实现滑动抽屉效果的一个组件,它允许开发者在界面下方或上方隐藏一个可滑动的视图,通常用于显示附加菜单或操作选项。这种设计模式常见于许多应用中,如谷歌地图、电子邮件...

    Android Launcher抽屉类SlidingDrawer的使用(源码)

    Aj_01 来自:http://blog.csdn.net/Android_Tutor/archive/2010/04/14/5486804.aspx 测试:Android Launcher抽屉类SlidingDrawer的使用!

    android SlidingDrawer 左侧拉出

    在Android开发中,`SlidingDrawer`是一个非常实用的组件,它允许用户通过手势从屏幕边缘滑出一个隐藏的视图,类似于许多应用中的抽屉式导航菜单。在这个实例中,我们将关注如何实现一个从左侧拉出的`SlidingDrawer`...

    android slidingdrawer实例

    在Android开发中,SlidingDrawer 是一个非常常见的组件,它为用户提供了一种滑动打开和关闭的抽屉式界面效果。通常,这个组件用于隐藏一些不常用但必要的内容,如设置选项、帮助信息等,用户可以滑动抽屉来显示或...

    Android抽屉 SlidingDrawer

    用SlidingDrawer注意两点,一个是android:handle(委托要展开的图片加载Layout配置) 和android:content(要展开的Layout Content), 我的csdn博客地址: ...

    android自定义slidingdrawer

    在Android开发中,SlidingDrawer 是一个非常常见的组件,它允许用户通过拖动来显示或隐藏内容,类似于抽屉的效果。然而,标准的SlidingDrawer组件在某些情况下可能无法满足开发者的需求,比如需要部分数据始终可见。...

    Android学习笔记(二四):多页显示SlidingDrawer的使用.doc

    在Android开发中,SlidingDrawer是一个非常实用的组件,它允许用户通过拖动一个手柄来显示或隐藏内容。在本篇Android学习笔记中,我们将探讨如何使用SlidingDrawer实现多页显示,并理解其工作原理和相关属性。 首先...

    android抽屉项目源码实例SlidingDrawer

    本项目源码实例"SlidingDrawer"是针对这一需求的具体实现,旨在帮助开发者更好地理解和运用Android抽屉效果。 首先,SlidingDrawer是Android SDK提供的一种原生组件,它允许用户通过手势从屏幕边缘滑出一个隐藏的...

    Android 中抽屉 SlidingDrawer

    在Android应用开发中,抽屉(SlidingDrawer)是一个非常实用的组件,它允许开发者在屏幕上添加一个可滑动的面板,通常用于隐藏或显示额外的功能或内容。抽屉类在早期版本的Android SDK中被广泛使用,但在后来的版本...

    android 抽屉从左拉出 slidingdrawer

    本项目以"android 抽屉从左拉出 slidingdrawer"为主题,旨在实现一个自定义控件,模拟SlidingDrawer的效果,但支持从左侧拉出,向右收回。SlidingDrawer虽然在Android API 21之后被弃用,但其原理仍然值得学习和借鉴...

    SlidingDrawer:API级别17中不推荐使用android.widget.SlidingDrawer类,现在不再支持。 在http上查看更多信息-android source code

    API级别17中不推荐使用android.widget.SlidingDrawer类,现在不再支持。 请参阅更多信息。 我已经在Android开放源代码项目的源代码上完成了自己的实现。 目前,它支持所有方向,即自上而下,自下而上,从左至右和从...

    知识共享-android之slidingdrawer的应用(雷惊风).

    标题与描述中提到的知识点是关于Android开发中的`SlidingDrawer`组件的应用。在Android开发中,`SlidingDrawer`是一种用于创建滑动抽屉效果的布局容器,它允许用户通过触摸屏幕边缘来展开或收起一个包含额外控件的...

Global site tag (gtag.js) - Google Analytics