
Android自定义View
文章平均质量分 94
AntDreamer
这个作者很懒,什么都没留下…
展开
-
Android经典实战之Kotlin中实现圆角图片和圆形图片
在 Kotlin 中实现圆角的可以通过自定义控件和使用Canvas和Path进行剪裁来实现。下面是一个简单的实现方法,继承并自定义绘制方法,使其可以设置圆角属性。首先,创建一个自定义的= null,init {// 初始化代码,可以在此读取自定义属性// 设置圆角半径在 XML 布局文件中使用自定义的在中定义一个样式,用于设置的圆角:原创 2024-08-07 21:24:15 · 965 阅读 · 0 评论 -
Android面试题之自定义View注意事项
继承View重写onDraw方法主要用于实现不规则的效果,即这种效果不方便通过布局的组合方式来实现。相当于就是得自己“画”了。采用这种方式需要自己支持wrap_content,padding也需要自己处理继承ViewGroup派生特殊的Layout主要用于实现自定义的布局,看起来很像几种View组合在一起的时候,可以使用这种方式。这种方式需要合适地处理ViewGroup的测量和布局,并同时处理子元素的测量和布局过程。比如自定义一个自动换行的LinerLayout等。原创 2024-07-12 09:48:14 · 1578 阅读 · 0 评论 -
Android自定义View之Canvas一文搞定
Canvas我们可以简单理解为画布或是ps里面的图层,是绘制图形的直接对象,控制着图形的形状,比如矩形、圆形等。我们在自定义View时,通过调用Canvas的API来绘制具体的图形。Canvas是绘制图像的直接操作对象,和Paint搭配使用能绘制丰富的图像要掌握Canvas的常用的一些API要掌握Canvas的平移和旋转操作,能帮我们简化很多图像坐标的计算欢迎关注我的公众号查看更多精彩文章!原创 2024-07-07 09:28:36 · 618 阅读 · 0 评论 -
Android面试题自定义View之Window、ViewRootImpl和View的三大流程
(1)在通过继承View的方式自定义View时,需要特别处理wrap_content的情况,因为View中默认相当于没处理(和match_parent效果一样)(2)在Activity中获取View的宽高需要用特殊的方式:onWindowFocusChanged、view.post(runnable)、ViewTreeObserver的OnGlobalLayoutListener(3)我们的View的显示离不来Window,无论是Activity、Dialog还是Toast,都对应着一个Window。原创 2024-07-06 14:44:54 · 1329 阅读 · 0 评论 -
Android自定义View之requestLayout方法和invalidate方法
自定义View的时候难免会和这2个方法打交道,在之前的文章中我们已经介绍了invalidate方法,今天我们来对比下requestLayout方法和invalidate方法有什么不同之处等不及的先给个结论: requestLayout方法会导致View的onMeasure、onLayout、onDraw方法被调用;invalidate方法则只会导致View的onDraw方法被调用...原创 2018-08-18 21:44:00 · 900 阅读 · 0 评论 -
Android自定义View之事件分发机制总结
事件序列(1)手指接触屏幕后会产生一系列事件,事件分为3种:ACTION_DOWN(手指刚刚接触屏幕)、ACTION_MOVE(手指在屏幕移动)、ACTION_UP(手指从屏幕松开)(2)一个事件序列为ACTION_DOWN–>ACTION_MOVE–>…–>ACTION_UP事件传递的顺序 Activity–>Window–>deco原创 2018-08-17 10:35:39 · 628 阅读 · 0 评论 -
Android自定义View之Window、ViewRootImpl和View的三大流程
View的三大流程指的是measure(测量)、layout(布局)、draw(绘制)。下面我们来分别看看这三大流程View的measure(测量)MeasureSpecMeasureSpec是View的一个内部静态类//view.classpublic static class MeasureSpec { private static final int M...原创 2018-08-16 09:53:56 · 781 阅读 · 0 评论 -
Android自定义View之invalidate和postInvalidate方法的区别
我们在自定义View时免不了要使用invalidate方法,这个方法的作用大家也比较清楚,就是让我们的View进行刷新重新绘制的。但是postInvalidate方法可能就不是那么熟悉了,因为平时开发时invalidate方法相对而言会用得比较多。不过需要大家注意的是,面试官在问到View相关的问题时,就很有可能会问到postInvalidate方法,所以我们还是有必要来学习一下。那inval...原创 2018-08-13 10:10:10 · 1592 阅读 · 0 评论 -
Android自定义View之双缓冲机制和SurfaceView
双缓冲机制问题的由来CPU访问内存的速度要远远快于访问屏幕的速度。如果需要绘制大量复杂的图像时,每次都一个个从内存中读取图形然后绘制到屏幕就会造成多次地访问屏幕,从而导致效率很低。这就跟CPU和内存之间还需要有三级缓存一样,需要提高效率。第一层缓冲在绘制图像时不用上述一个一个绘制的方案,而采用先在内存中将所有的图像都绘制到一个Bitmap对象上,然后一次性将内存中的Bitm...原创 2018-08-11 19:12:45 · 805 阅读 · 0 评论 -
Android自定义View之轻松实现圆角和圆形图片
在日常开发过程中,图片的特效处理是一个很常见的需求。除了颜色特效,还有就是外形的特效,比如圆角图片,圆形图片等。今天我们就来学习下图片的外形特效相关的知识Paint画笔特效Paint有一个专门用于处理图片外形特效的API//Paint.classpublic Xfermode setXfermode(Xfermode xfermode) { long xfermodeNa...原创 2018-08-10 12:36:32 · 2808 阅读 · 2 评论 -
Android自定义View之图像的色彩处理
Paint和Canvas为我们提供了丰富的API,使我们可以轻松的自己画一些图。除了可以绘制文字和简单的图形,Paint和Canvas还有一些高级的功能,比如改变图片的颜色和形状等。今天我们就来看看怎么利用Paint和Canvas改变图片的颜色。改变图片的颜色我们需要用到Paint和Canvas的新的APIPaint设置颜色过滤paint.setColorFilter(ne...原创 2018-08-09 10:46:33 · 476 阅读 · 0 评论 -
Android自定义View之Canvas的使用
用继承View的方式来自定义View,我们就需要重写onDraw方法,也就是得咱自己来画图了。画图就得用到画笔和画布,也就是Paint和Canvas。我们来了解下Canvas。Canvas Canvas我们可以简单理解为画布或是ps里面的图层,是绘制图形的直接对象,控制着图形的形状,比如矩形、圆形等。我们在自定义View时,通过调用Canvas的API来绘制具体的图形。C...原创 2018-08-08 09:54:19 · 409 阅读 · 0 评论 -
Android自定义View之Paint绘制文字和线
Android自定义View系列Android自定义View注意事项用继承View的方式来自定义View,我们就需要重写onDraw方法,也就是得咱自己来画图了。画图就得用到画笔和画布,也就是Paint和Canvas。我们先来了解下Paint。Paint Paint我们可以简单理解为画笔或是PS里的油漆桶,也就是实际上需要设置比如颜色、粗细、字体大小等属性的对象。我们在...原创 2018-08-07 10:55:29 · 3017 阅读 · 0 评论 -
Android自定义View注意事项
自定义View的分类继承View重写onDraw方法主要用于实现不规则的效果,即这种效果不方便通过布局的组合方式来实现。相当于就是得自己“画”了。采用这种方式需要自己支持wrap_content,padding也需要自己处理继承ViewGroup派生特殊的Layout主要用于实现自定义的布局,看起来很像几种View组合在一起的时候,可以使用这种方式。这种方式需要合适地处理V...原创 2018-08-06 09:45:59 · 1943 阅读 · 0 评论