首页
学习
活动
专区
圈层
工具
发布

Android动画基础 | 概述、逐帧动画、视图动画

代码处,实例化这个View控件; 通过(AnimationDrawable)view.getBackground();获得view的背景Drawable对象并向下转型为AnimationDrawable..."属性,也可实现; 小结: 逐帧动画的基础是帧,也即图片,图片一般由美工制作; 没有原图就无法制作逐帧动画,则应用范围比较小; 将一套帧图设置在(AnimationDrawable...View对象; 使用view实例getBackground()获得背景; view.getBackground()返回的是一个Drawable对象, 在这里已经明确背景是AnimationDrawable...或者给添加android:oneshot="true"属性,也可实现: ? 3.1 视图动画....我们可以看到动画视图发生了偏移, 但是超出父控件的部分是不能被绘制出来的;(有上面的定制,描边区域内即父控件) 可以知道上文的 缩放动画 其实有一部分是超出了父布局,从而没有显示出来 要权宜解决这个问题也很简单

4.8K21

Android中的各种Drawable类详解

视图View的背景就是一个Drawable对象,在视图需要进行绘制而调用draw函数时,内部的一部分实现会将调用委托给背景属性mBackground这个Drawable对象的draw函数来完成背景的绘制...ColorDrawable 颜色可绘制类 颜色可绘制类。类构造时指定一个颜色,或者调用setColor指定颜色,setAlpha函数会把设置的透明度和本来的颜色的透明度相乘。...AnimationDrawable 帧动画可绘制类 这是一个容器可绘制类,用于定期播放一批指定的Drawable。不可以和ClipDrawable结合起来播放逐渐展开的动画。...你可以在构造中指定缩放的比例和缩放的中心点,注意的是所缩放的Drawable对象的level不能为0: public ScaleDrawable(Drawable drawable, int gravity...一般用这个类来设置圆角按钮背景。 LayerDrawable 图层可绘制类。 用于重叠多个可绘制对象。这是一个容器可绘制类,里面可以添加多个子可绘制对象,每个子可绘制对象就是其中的一层。

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 透明状态栏(伪沉浸式)

    而由于 Android API 的不同,需要考虑 4.4、5.0、6.0 前后的不同。...因为如果是图片,就不能设置状态栏颜色或者盖个 View 上去,而是让状态栏透明,内容往下,让图片透上去,当然如果是子 View 的图片,还不能 setFitsSystemWindows。...private boolean setStatusBarWithViewBg(View view, boolean isRootView) { Drawable drawable = view.getBackground...状态的重置 因为考虑同一个 Activity 多次改变状态栏颜色的情况,遇到的一个比较烦的问题是,许多状态需要重置,不然就会影响下一次,而且如果设置图片又改成颜色的,那么要考虑的更多,一会希望图片内容顶到状态栏下面...后来考虑将颜色和图片的逻辑分开,因为有图片时要重置的和只是改状态栏颜色的不一样,放一起如果只是改状态栏颜色会走大量无意义的逻辑,当然 4.4 版本也是要将内容往下,也要特殊考虑。

    2.8K20

    Android入门教程 | res资源目录简介与shape的绘制和使用

    drawable/:位图文件(.png、.9.png、.jpg、.gif)或编译为以下可绘制对象资源子类型的 XML 文件: 位图文件、九宫格(可调整大小的位图)、状态列表、形状、动画可绘制对象、其他可绘制对象...mipmap/:适用于不同启动器图标密度的可绘制对象文件。应用图标放这里。 mipmap后面跟着的dpi类别,比如hdpi mdpi,里面的图标尺寸大小是不同的。...shape的绘制和使用 工程目录中有一个drawable文件夹,里面存放的是一些静态的图片资源文件。...比如位图文件(.png、.9.png、.jpg、.gif);或一些可绘制对象资源子类型的 XML 文件(本文称为drawable文件)。...[1240] shape介绍 shape又称为“形状可绘制对象”。为了简便,以下都称作shape或者“shape文件”。 shape是一种在 XML 文件中定义的通用形状。

    2K20

    Android性能优化系列之渲染优化

    最容易看出的是这两条,我们先分析和优化这两条,然后再进行其他的优化. 优化过渡绘制区域 在进行位置确认后,我们大概确定了过渡绘制的区域,让我们来使用工具来进行验证和View确认....和主题有关,即这个背景是属于ActionBarOverlayLayout的.这种类型的过渡绘制解决也比较方便,在文件管理器的主Activity的onCreate方法中,加入 this.getWindow...组成,前者是上面可以左右拉动的那部分,后者是底部不能拉动的那部分(这个从HierarchyView中也可以看出来:如下图所示: 点击CustomViewBehind,查看其所占的区域,就可以发现背景是这个...的颜色也比之前要浅了,这一步优化需要根据具体情况进行) 下面是优化后的效果图: 通过调整,已经发现绘制优化了很多 Android渲染优化工具介绍 使用Lint优化代码 Lint工具的使用比较简单,根据给出的提示做对应的修改即可...分析GLTrace文件,下图是优化过后的图,对比优化前的图可以发现,优化后不会去绘制默认的背景图和CustomViewBehind的背景图.

    1.4K30

    HenCoder Android 自定义 View 1-5: 绘制顺序

    例如通常一个 LinearLayout 只有背景和子 View,那么它会先绘制背景再绘制子 View;一个 ImageView 有主体,有可能会再加上一层半透明的前景作为遮罩,那么它的前景也会在主体之后进行绘制...这其中的第 2、3 两步,前面已经讲过了;第 1 步——背景,它的绘制发生在一个叫 drawBackground() 的方法里,但这个方法是 private 的,不能重写,你如果要设置背景,只能用自带的...API 去设置(xml 布局文件的 android:background 属性以及 Java 代码的 View.setBackgroundXxx() 方法,这个每个人都用得很 6 了),而不能自定义绘制...drawBackground(Canvas); // 绘制背景(不能重写) onDraw(Canvas); // 绘制主体 dispatchDraw(Canvas); // 绘制子 View...所以如果我想给这个 EditText 加一个绿色的底,我不能使用给它设置绿色背景色的方式,因为这就相当于是把它的背景替换掉,从而会导致下面的那条横线消失: <EditText ...

    98930

    应用开发进阶必经之路之性能优化(上)

    有时候产品在市场上的表现差,真不能全怪产品和运营,程序体验问题也是很大一部分原因。   ...但大部分产品并没有足够重视性能问题,随便打开一个应用,即使是大厂出品,也极大可能存在过渡绘制和内存泄露的问题;也有可能是开发人员意识到了程序存在性能问题,但完成迭代就够忙的了,哪有时间去做这类不能体现绩效的事情...性能指标的定义应该具有可衡量、可比较的特点,所以每项性能指标可以是数值,也可以是一份报告,比如: 流畅度:FPS,即Frams per Second,一秒内的刷新帧数,越接近60帧越好; 启动时间:时间...(4) 去掉不必要的背景 如果不是通过测量和仔细分析,你很难发现这个不经意的细节会是导致过渡绘制、内存问题的主要原因,每个Activity都会在AndroidManifest.xml...总结一下过渡绘制的检测和解决方案:通过“开发者选项”中的“显示过渡绘制”和Android提供的工具“HierarchyViewer”,以每个界面为单位,可以完全检测出每个界面的过渡绘制问题;因为导致过渡绘制的原因不一

    93320

    Android CompoundButton

    android.widget.Button      android.widget.CompoundButton RadioGroup不是CompoundButton的子类,所以不能直接使用CompoundButton...返回值 定义了的OnClickListener被调用返回True,否则返回False public void setButtonDrawable (Drawable d) 给按钮背景设置一个可绘制对象...(如:图像) 参数 d 用作背景的可绘制对象(如:图像) public void setButtonDrawable (int resid) 通过资源Id给按钮背景设置一个图像 参数 resid...参数 canvas 在画布上绘制背景 protected boolean verifyDrawable (Drawable who) 如果你的视图子类显示他自己的可视化对象,他将要重写此方法并且为了显示可绘制返回...此操作允许进行绘制时有动画效果。   确认当重写从方法时,需调用父类相应方法。 参数 who 需判断的可绘制对象(Drawable)。

    1.2K20

    Android性能优化(二)之布局优化面面观

    一、初识布局优化 通过《Android性能优化(一)之启动加速35%》我们获得了闪电般的App启动速度,那么在应用启动完毕之后,UI布局也会对App的性能产生比较大的影响,如果布局写得糟糕,显而易见App...去掉背景色之后再看一下Overdraw; ? 对比一下优化后的布局的颜色,可以看出Overdraw降到了可以接受的程度。 备注:有些过度绘制都是不可避免的,需要结合具体的布局场景具体分析。...:text="Merge标签演示" /> 我们通过UiAutoMatorViewer(无需root,相比Hierarchy Viewer只能查看布局层次,不能得到绘制时间...Android定义了ViewStub类,ViewStub是轻量级且不可见的视图,它没有大小,没有绘制功能,也不参与measure和layout,资源消耗非常低。...include标签 include标签和布局性能关系不大,主要用于布局重用,一般和merge标签配合使用,因和本文主题关联不大,此处不展开讨论。

    1.4K30

    绘制优化

    比如上面界面中的『调试 GPU 过度绘制 』的那个文本显示为蓝色,表示其过度绘制了一次,因为背景是白色的,然后文字是黑色的,导致文字所在的区域就会被绘制两次:一次是背景,一次是文字,所以就产生了过度重绘...为了提升用户体验,提升应用的流畅性,优化过度绘制的工作还是很有必要做的。 优化原则 一些过度绘制是无法避免的,比如之前说的文字和背景导致的过度绘制,这种是无法避免的。...应用界面中,应该尽可能地将过度绘制控制为 2 次(绿色)及其以下,原色和蓝色是最理想的。 粉色和红色应该尽可能避免,在实际项目中避免不了时,应该尽可能减少粉色和红色区域。...</style>   但是一般界面都会自己设置界面的背景颜色或者列表页则由 item 的背景来决定,所以默认的 Window 背景基本用不上,如果不移除就会导致所有界面都多 1 次绘制。...DrawerLayout 就是一个很不错的例子,先来看一下使用 DrawerLayout 布局的过度绘制结果: 按道理左边的抽屉布局出来时,应该是和主界面的布局叠加起来的,但是为什么抽屉的背景过度绘制只有一次呢

    1.1K10

    【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )

    过度绘制了 2 次 ; ③ 浅红色 : GPU 过度绘制了 3 次 ; ④ 深红色 : GPU 过度绘制了 4 次及 4 次以上 ; 一般情况下蓝色 , 和浅绿色是可以接受的 ,...红色 , 深红的区域绝对不能大范围出现 ; 3....过渡渲染示例 这是 Android 的设置界面 , 大部分是蓝色 , 或浅绿 , 浅红色只占很小的部分 ; 四、 背景过度绘制 ---- 1 ....背景设置 : ① 设置背景 : 设置了背景 , 图片或颜色值 , 绘制增加 1 次 ; ② 透明背景 : 背景透明 , 不增加绘制次数 , 绘制增加 0 次 ; ③ 主题背景 : 在主题中设置了背景..., 也会增加 1 次绘制 ; 如果同时设置布局的背景和主题背景 , 此时会绘制 2 次 ; 删除一次背景设置 , 这里建议删除主题的背景 ; 2 .

    3K20

    Android知识点基础篇(二)

    从定义来讲Binder是一种Android中实现跨进程的方式;也是一种虚拟的物理设备驱动,连接Service进程、Client进程和ServiceManager进程;而对于Android代码来说,Binder...参考文章:十分钟Android中的嵌套滚动机制 14. View的绘制原理,自定义View,自定义ViewGroup   View的绘制主要分为View的绘制和ViewGroup的绘制。...对于单一View的绘制,在draw方法中,依次绘制背景、内容、装饰。而我们经常重写的onDraw方法其实就是绘制内容。...而ViewGroup的绘制会扫尾复杂一些,首先还是绘制自身,依次是背景、内容、子View、装饰。绘制子View的时候ViewGroup会遍历子View,然后挨个绘制。...4 新的图片解码类ImageDecoder 5 Android P引入了一个新的AnimatedImageDrawable类来绘制和显示GIF和WebP动画图像。 20.

    1.2K31

    Android性能优化:手把手带你全面了解绘制优化

    影响的性能 绘制性能的好坏 主要影响 :Android应用中的页面显示速度 2. 如何影响性能 绘制影响Android性能的实质:页面的绘制时间 1个页面通过递归 完成测量 & 绘制过程 3.... 问题 一般情况下,该默认的 Window 背景基本用不上:因背景都自定义设置 若不移除,则导致所有界面都多 1 次绘制 解决方案 移除默认的 Window 背景 //...如2个常见场景: 场景1:ListView 与 Item 列表页(ListView) 与 其内子控件(Item)的背景相同 = 白色,故可移除子控件(Item)布局中的背景 场景2:ViewPager...与 Fragment 对于1个ViewPager + 多个 Fragment 组成的首页界面,若每个 Fragment 都设有背景色,即 ViewPager 则无必要设置,可移除 关于更多场景,...总结 本文主要讲解Android 性能优化中的 绘制优化

    1.1K20

    Android应用优化之流畅度实操

    过度绘制指的是在屏幕一个像素上绘制多次(超过一次),例如一个有背景的TextView,那显示文字的那个像素至少绘制了两次,一次是文字,一次是背景。...for OpenGL ES,它可以记录和分析app每一帧的绘制过程,以及列出所有用到OpenGL ES的绘制函数和耗时,所以通过Tracer for OpenGL ES我们可以很容易的看出app的每一帧是怎么画出来的... 但是在布局页面,设计人员设计的底色,根本不是默认的背景色,如果我们在这个页面的根布局再设一个背景的话就是多绘制一层背景。...另外上面的设置背景代码,要注意书写顺序,这里可包含了不少View的创建的知识,有兴趣的同学可以自行查阅。...而在主线程中进行长时间和频繁的IO操作,对流畅度是有非常大的影响的,对于网络请求在安卓4.0之后,就已经不能在主线程进行网络操作了,否则程序会出现crash,因此我们对IO层的操作要进行监控。

    1.5K30
    领券