关于Android View与Drawable的问题,求高人解惑

调用View.invalidate()方法,就会请求View重新draw()。可是我看了invalidate()与相关的方法,并没有与draw()有直接的关系。请问invalidate()是如何使View重新draw()的?

Drawable.mutate()方法为了不产生新的对象,直接返回了它自身。既然是这样,那为什么mutate()以后同一个图像资源能够有不同的常态(比如透明度)?在BitmapDrawable中在第一次mutate()的时候新生成一个BitmapState常态,后面的就是直接返回它自身了。第一次常态对象改变了倒还可以理解,可后面的我就不明白了。求高人解惑,非常感谢!

2
扫码支付0.1元 ×
其他相关推荐
关于Android View与Drawable的问题
原问题来自于CSDN问答频道,更多解决方案见:http://ask.csdn.net/questions/2497rnrn问题描述:rnrn调用View.invalidate()方法,就会请求View重新draw()。可是我看了invalidate()与相关的方法,并没有与draw()有直接的关系。请问invalidate()是如何使View重新draw()的?rnrnDrawable.mutate()方法为了不产生新的对象,直接返回了它自身。既然是这样,那为什么mutate()以后同一个图像资源能够有不同的常态(比如透明度)?在BitmapDrawable中在第一次mutate()的时候新生成一个BitmapState常态,后面的就是直接返回它自身了。第一次常态对象改变了倒还可以理解,可后面的我就不明白了。求高人解惑,非常感谢!rnrn解决方案:rnrn1:invalidate刷新原理比较复杂rnrninvaliddate=>父view=>Handler=>performTraversals()=>draw()=>onDraw();rn[code=java]/* ============================detail====================================rn其继承的父views cheduleTraversals()方法向Handler发送消息rnviewRoot 处理其消息rncase DO_TRAVERSAL: rn performTraversals();rnperformTraversals()方法,调用private void draw(boolean fullRedrawNeeded)rn其中含有rnmView.draw(canvas); rn接着rnif (!dirtyOpaque) onDraw(canvas); rn*/[/code]rnrn2:不是为了省内存,恰恰相反,原生的drawable是共享部份数据才是省内存rn其中共享部分就是constant state(常态)rn你想啊,N张图片用一个常态,我若想改这个值,如Alpha那么所有图片都变了,就像rn变量static变量一样了rn而使用mutate以后,会复制constant state,drawable还是共享的,这也算是解决了低于1.5版本的一个"bug"rn
自定义view与自定义drawable在设置图像中的使用
自定义View 先使用BitmapFactory.decodeResource()来获取一个位图Bitmap,其中第一个参数为资源,第二个参数为要修改的图片 然后使用Shader对其进行操作 对于BitmapShader有几种模式{CLAMP拉伸,REPEAT重复,MIRROR镜像},这里选CLAMP 然后将获得的bitmap绘制成圆形 这样便可以在布局中使用这个view了 代码如下
自定义view获取drawable图片
//activity text_handler = (TextView) findViewById(R.id.text_handler); SpreadView rview=(SpreadView)findViewById(R.id.spreadView); rview.setCoreImage(R.drawable.headx); //自定义view的方法 public class ...
Android中关于drawable文件夹的种种问题
    一般来说,drawable文件夹用于存放开发时所需要的图片资源,但是工程创建后目录中res文件夹内默认只有drawable文件夹,而不会有drawable-hdpi、drawable-xhdpi等等为了分辨率专门分别建立的文件夹,这些文件夹需要自己手动创建,创建过程如下:    弹出的会话中输入文件夹名称(drawable-xxhdpi、drawable-xxxhdpi、drawable-...
安卓开发之自定义View通过Drawable绘制图标
//主要通过Drawable对象来绘制图标public class MyView extends View{ private float mCircleRadius; private int defaultStepIndicatorNum; private Drawable mIcon; private Rect rect; public MyView(Conte
android 之 ListView 里面嵌套 GridView 遇到的问题及其解决方法。
基本上两个嵌套遇到的问题,都可以在这里找到解决方法http://www.cnblogs.com/linguanh/p/4844980.html 我们直接入主题。所有问题例子请参照下图   1,怎样使图片具有点击事件? 答:      解决方法:      在你的BaseAdapter里面不要设置下面这三个东西,然后再设置GridView的on
Android : 把一个layout转化成一个Drawable的实例
最近有个需求需要把menu的icon和title同时显示出来(显示在一行上),但是在资源文件中定义menu 时使用android:showAsAction="ifRoom|withText" ,没有效果,于是就有了以下的解决方案。 实现思路:Layout -> View -> Bitmap -> Drawable 下面的实现是,把含有一张图片(ImageView)和一个字符串(TextView
别再用 View 来实现分割线了,用 Drawable 来画吧
DividerDrawable 项目地址:nekocode/DividerDrawable  简介:别再用 View 来实现分割线了,用 Drawable 来画吧 This library can help you easily layout and draw dividers on existing views. For better performance, don't create n...
从源码上剖析Android View绘制Drawable的原理
一、引言对于Drawable,相比每个Android 开发者都无比熟悉,在开发过程中我们经常setBackground设置背景,那么对于Drawable你了解多少呢?对于View是怎样把Drawable绘制出来又了解多少呢?对View根据不同状态绘制不同的背景又了解多少呢?也就是我们经常使用的selector,今天我们从源码上来深度剖析这些原理,从本质上卸下Drawable的神秘面纱。二、背景介绍在
Android中drawable给View设置上下左右边框
1.在drawable文件夹下新建一个shape_main_list_bg.xml文件[html] view plain copy<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >      <!-- This is the main color -->      <item...
硬件加速导致的自定义drawable的内存泄漏
最近做android 上图标矢量化工作,选取SVG格式做为矢量化方案,方法和微信开发SVG类似,最后转换SVG文件生成java代码drawable类,过程下次再说。android中读取java代码绘制记录,用canvas绘制。在这里遇到个问题,在用canvas绘制图片时,如果对同一个view绘制多次,会使native内存不断增长,native里内存不能释放,经过排查,最后发现是默认使用硬件加速导致的
安卓自定义View----实现TextView可设置drawable宽高度
前言 如上图所示,相信可爱的安卓程序猿们在开发中经常会遇到这种样式的UI开发。其实上面这种布局很简单,没有难度,只不过是繁杂的view嵌套而已。通常我们在实现上面这种效果的时候会有3种方式: 方式一:   一层一层的搭建,首先外层是一个横向的LinearLayout,然后里面包裹着四个LinearLayout作为子View, 每一个Linearlayout里面再写上一个ImageView和一
artcurs
artcurs(未破解)求高人破解
Android Bitmap内存管理,解决内存溢出问题(1)之自定义BitmapDrawable
在Android 2.3.3或者更低版本下的时候,对于释放Bitmap的内存调用recycle()方法是必要的。否则在加载大量Bitmap的时候很容易就造成 OutOfMemoryError 。recycle()能够及时的释放Bitmap内存。 注意:只有在不用Bitmap的时候才能调用recycle(),否则会造成Canvas: trying to use a recycled bitma
自定义属性reference 指向 Drawable 并转化为 Bitmap
前面在写  Android学习小demo(1)自定义View  的时候,自定义的drawable 属性是指向 drawable 中的某一张图片,如下: <com.example.apidemostudy.CustomRotateView         android:id="@+id/rotateView
android的drawable 和bitmap的效率对比测试
下这个是测试加载1000个Drawable对象的代码: public class Main extends Activity { int number = 1000; Drawable[] array; @Override public void onCreate(Bundle savedInstanceState) { super
高人十大特征,你具备几个
一、苦到舌根吃的消; 二、烦到心乱耐得住;  三、困到绝望行得通;  四、屈到愤极受得起;  五、怒到发指笑得出;  六、急到眉燃定得住;  七、喜到意满沉得下;  八、话到嘴边停得住;  九、色到情迷站得稳;  十、财到眼前看得淡。
android 自定义view drawable
http://blog.csdn.net/ooppcool/article/details/47026943 源码,有问题请留言
玩转Android之Drawable的使用
Drawable天天用,可你是否对Drawable家族有一个完整的认知?今天我们就来系统的学习一下Drawable的使用。
Drawable 吐血总结
一.Drawable简介 Drawable是对可绘制物件的一般抽象,表示一种图像的概念,在实际开发中常被当做View的背景或者ImageView的图像,一般用xml来构建。(与View不同,没有事件和交互方法) 一般情况下,除了直接使用放在Drawable下的图片,其实的Drawable的用法都和xml相关,我们可以使用shape、layer-list等标签绘制一些背景,还可以通过se
SQL解惑(第2版)-带书签目录超清扫描版.pdf
SQL解惑(第2版)-带书签目录超清扫描版.pdf 这个是带完整书签目录的超清新版
C语言解惑.[美]Alan R.Feuer(带详细书签) PDF 完整版 下载
本书脱胎于作者在C语言的摇篮——贝尔实验室教授C语言的讲稿,几乎涵盖了C语言各个方面的难点,并包含了一些其他书籍很少分析到的问题。在每个谜题后面都有详尽的解题分析,使读者能够清晰地把握C语言的构造与含义,学会处理许多常见的限制和陷阱,是一本绝佳的C语言练习册。 本书结构清晰,循序渐进,适合于C语言的初学者,可用作高校计算机相关专业的辅助教材,同时也可供具有一定C语言编程经验的读者复习提高之用。 本书结构清晰,循序渐进,适合于C语言的初学者,可用作高校计算机相关专业的辅助教材,同时也可供具有一定C语言编程经验的读者复习提高之用。 就内容而言,《C语言解惑》讲解的不深,适合初学者加深一下,或者作为学习的辅助资料。内容也不多,不会引起恐惧。学编程语法是必须,更重要的内容是学会语法以后要多读别人的思想。而且本书的编排比较有趣,虽然内容不多,但处处精华,需要多想想才能体会作者深意。 学用C语言的过程与其他程序设计语言一样,大致可以分为三个阶段。第一阶段是理解这种语言的语法。至少需要达到编译器不再提示程还有语法性错误的程度。第二阶段是理解编译器将赋予正确构造的语法结构什么含义。第三阶段则是形成一种适合这种语言的编程风格。其第二阶段往往是C语言使用者不容易逾越的平台。本书脱胎于贝尔实验室极受欢迎的内部培训资料。书中以一种卓有成效的、独一无二的方法讲授C语言编程。精选了许多典型习题,帮助大读者迅速通过C语言学习过程中的第二阶段。这些习题不仅能够检验读者对C语言语法规则的掌握程度。还可以带领读者到达一些不为熟悉的角落,学会避免一些常见的陷阱。从而更加深入地理解C语言的精髓,迈上一个新的台阶。 本书脱胎于作者在C语言的摇篮贝尔实验室教授C语言的讲稿,几乎涵盖了C语言各个方面的难点,并包含了一些其他书籍很少分析到的问题。 第1章 操作符 1 谜题1.1 基本算术操作符 1 谜题1.2 赋值操作符 6 谜题1.3 逻辑操作符和增量操作符 10 谜题1.4 二进制位操作符 16 谜题1.5 关系操作符和条件操作符 23 谜题1.6 操作符的优先级和求值顺序 27 第2章 基本类型 33 谜题2.1 字符、字符串和整数类型 33 谜题2.2 整数和浮点数的转换 37 谜题2.3 其他类型的转换 43 第3章 头文件 49 第4章 控制流 51 谜题4.1 if语句 51 谜题4.2 while和for语句 57 谜题4.3 语句的嵌套 62 谜题4.4 switch、break和continue语句 67 第5章 编程风格 73 谜题5.1 选用正确的条件 73 谜题5.2 选用正确的结构 76 第6章 存储类 81 谜题6.1 块 81 谜题6.2 函数 85 谜题6.3 更多的函数 89 谜题6.4 文件 94 第7章 指针和数组 99 谜题7.1 简单的指针和数组 99 谜题7.2 指针数组 105 谜题7.3 多维数组 110 谜题7.4 难解的指针 113 第8章 结构 119 谜题8.1 简单的结构、嵌套结构 119 谜题8.2 结构数组 124 谜题8.3 结构指针数组 131 第9章 预处理器 139 谜题9.1 C语言的预处理器的宏命令替换功能 139 谜题9.2 宏的副作用 145 附录 149 附录A 操作符优先级表 149 附录B 操作符汇总表 150 附录C ASCII字符表 153 附录D 类型转换表 154
关于安卓setBackgroundColor中Drawable复用导致背景重复改变
setBackgroundColor()导致的问题分析及解决
学习《SQL解惑》
PUZZLE ONE 1、integer , date ,extract 2、constraint  ( )  check ( ) code: create table fiscalyeartable1 (fiscal_year integer not null primary key, start_date   date    not null, CONSTRAINT valid_
Kaggle搭积木式刷分大法: LB 0.11666(排名前15%)
專 欄 ❈本文作者:王勇,目前感兴趣项目商业分析、Python、机器学习、Kaggle。17年项目管理,通信业干了11年项目经理管合同交付,制造业干了6年项目管理:PMO,变革,生产转移,清算和资产处理。MBA, PMI-PBA, PMP。❈ 我参加了两个Kaggle 比赛,一个是Titanic (分类),另一个是HousePrice(回归)。分别获得了前7% (花了约3个月业
android图片缩放(指定大小) drawable获取图片后怎么设置图片大小
http://gqdy365.iteye.com/blog/1125037 android图片缩放(指定大小) private Drawable zoomDrawable(Drawable drawable, int w, int h) { int width = drawable.getIntrinsicWidth(); int heigh
判定网站优化效果 千万不要拿对手网站说事
对于一个企业网站来说,如果处于一个冷门行业,用户并不多,那么,网站一天想要获得超高流量,这几乎是睁着眼睛说瞎话,在这个讲究业绩的时代,企业网站无论是自招员工优化还是外包出去,都应该有一个评判的标准,该如何设置一个合理的标准呢?     这其实是一件很难的事情,并不容易轻易做到,目前最好的方式,就是看竞争对手的网站指标,尤其是作为后来者,第一个想要超越的就是竞争对手。如何有效的对竞争对手网站进行
刘振安 刘燕君 编著C语言解惑配套程序.rar
刘振安 刘燕君 编著C语言解惑配套程序.rar 资源是从华章出版社官网下载的
急求高人解惑,万分感激!!
有一个电杆资料表有字段电杆编号,所属路段,由于电杆编号有可能重复只有电杆编号+所属路段才能rn确定唯一值,另外有一个电杆装备表设计时是将其作为电杆资料表的子表来设计,他有字段电杆编号,装备类型,由于一个电杆编号可能对应多种装备,所以小弟迷糊了,本人使用ACCESS应该怎样建立两个表的主从关系?谢谢!
成功的条件:高人指点、贵人相助、小人监督、个人奋斗
高人的指点,能帮助你找到方向;    贵人的相助,能助你克服困难;    小人的监督,能使你防微杜渐;    个人的奋斗,则是将你推向成功的主力。   要做成大事,究竟需要哪些力量和资源? 简单概括起来,主要是五种人:高人,贵人,内人,敌人(对手),小人。 第一:高人开悟 每一个成功的人都经历过高人的开悟甚至指路。解决人的智慧和觉悟及方向等人生关键问题,是需要有高人指点的。 在人
关于Drawable你应该知道的
最近刚好看到drawable的相关知识,结合项目,很容易发现现在的弹窗背景、按钮背景大多使用圆角,这时候我们选择的方式就是使用drawable,而不是自定义view,原因有两个,第一使用drawable方便快捷,占用内存小;第二自定义view比较麻烦,占用内存大。综上,我们选择了drawable,这里对一些常见的drawable进行总结。 常见的Drawable ShapeDrawable ...
android 慎用drawable中大图,造成内存溢出的解决方案
android 中调用drawable中图片,占用大量内存,造成内存溢出的解决方案。
高清版 C语言解惑—指针、数组、函数和多文件编程
C语言解惑—指针、数组、函数和多文件编程
Android进阶——自定义View之继承TextView巧用DrawableLeft实现自己的CheckableTextView
继承TextView实现自定义的CheckableTextView模拟单选列表项和多选列表项功能
求高人指点,关于android的timepickerdialog
public Dialog onCreateDialog(int id)rn rn if(id==0)rn rn Calendar c2 = Calendar.getInstance();rn return new TimePickerDialog(this, new OnTimeSetListener() rn @Overridern public void onTimeSet(TimePicker view, int hourOfDay, int minute) rn TextView txm = (TextView)findViewById(R.id.txm);rn txm.setText(String.valueOf(hourOfDay)+":"+String.valueOf(minute));rn rn rnrn , c2.get(Calendar.HOUR), c2.get(Calendar.MINUTE), true);rnrn rn return null;
关于ViewPager使用出现的图片覆盖错误问题
return view == o;//不能直接返回true,会出乱图片覆盖错位 关于ViewPager使用出现的图片覆盖错误问题 今天使用最新版的Android studio 3.0版本的时候遇到ViewPager出现图片覆盖错位的问题,东看看找找,都无法找到问题所在,如下图: 写了四个imageview的轮播,当我跑起来的时候,四张图片都被覆盖了。而且到滑动爱他图片的时候,
Java解惑中文版高清pdf
java四大名著之一,告诉你什么样的代码是烂代码。Bloch和Gafter继承了Effective Java一书的传统,深入研究了Java编程语言及其核心类库的细微之处。本书特写了95个噩梦般的谜题,中间穿插着许多有趣的视觉幻象,寓教于乐。任何具备Java知识的人都可以理解这些谜题,但甚至是最老练的程序员也会觉得它们具有挑战性。
孟岩:感恩侯捷,遇高人不可交臂而失之
一个“技术文化人”的片段感悟作者: chenqiuge分类:架构实践 阅读:12,058 次添加评论<br />2003年我加入CSDN,6年之后离开。在2003年之后,我的技术身份就很难界定了。曾经有个朋友称我为“技术文化人”——不以软件开发为生,但整天都在拿软件开发来说事,与这个行业的整体关系可能比任何一个具体的程序员或者架构师都更密切。听上去像是一种恭维,又好像是暗讽,似乎我是站在戏台下面带头起哄的票友。其实在我看来,我与一线技术人的根本区别,在于关注的问题不同:他们关心的如何做好软件,我关心的是如何
安卓开发之Drawable巧妙的用处
平时我们想要一些特殊的界面效果大多数会使用自定义view,但相比较xml来说自定义view会稍微麻烦点,如果想要实现一些简单的效果,我们直接通过Drawable就可以实现 在Drawable的这些继承类中我们常用的主要有以下几种:LayerDrawable、ShapeDrawable、NinePatchDrawable、BitmapDrawable、StateListDrawable、Level...
VHDL入门解惑经典实例经验总结
比较老的VHDL书籍,但是书中的例子都很经典,且书中对每个例子的分析很透彻,对入门的新手还是很有帮助的,欢迎下载!
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题