自定义View

本文详细介绍了Android自定义View的绘制流程,包括Paint的基本用法、PathEffect的设置及阴影效果等。同时探讨了ViewGroup自定义时onMeasure与onLayout方法的实现要点,并对比了invalidate与requestLayout等方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

View scoller滑动问题:
scrollTo(int x,int y):x代表相对于(0,0)位置的偏移量
scrollBy(int x,int y):x代表相对于(getScrollX(),getScrollY())位置的偏移量。

系统学习之-自定义View的绘制-Paint详解
Painter 绘制图片样式叠加的3种场景:PorterDuff.Mode 
ComposedShader
ColorFilter
xPerforme

Painter 两个色彩优化的方法:
 setDither(dither) ,设置抖动来优化色彩深度降低时的绘制效果; 
setFilterBitmap(filterBitmap) ,设置双线性过滤来优化 Bitmap 放大绘制的效果。

ComposePathEffect
paint.setPathEffect(pathEffect) 设置path绘制效果:
CornerPathEffect DiscretePathEffect DashPathEffect PathDashPathEffect ,和组合效果的 SumPathEffect ComposePathEffect

附加效果
setShadowLayer()  外层阴影效果
setMaskFilter()  外层模糊效果

自定义View extends ViewGroup无法展现?
extends ViewGroup 必须重写onmeasure,onlayout
onmeasure 必须实现如下方法:
需要measureChrildren
设置自己的高度使用 setMeasureDimontions()
onlayout必须实现如下方法:
child.layout();

invalidate :draw、layout、measure方法
requestLayout:layout、measure方法。
requestfocus:ondraw方法,但是不重新绘制存在的view

Draw()
drawBackground(canvas);
// Step 3, draw the content
onDraw(canvas);
// Step 4, draw the children
dispatchDraw(canvas);
onDrawForeground(canvas);

参考资料:
    1、View的几种不同状态属性。
   2、如何根据不同状态去切换我们的背景图片。

Android中将布局文件/View添加至窗口过程分析 ---- 从setContentView()谈起 (读后感Window和DecorVieW类的联系、View添加至窗口过程)
mesure()绘图过程
layout()绘图过程
draw()绘图过程 
Android 自定义View绘制教程1 http://www.gcssloop.com/customview/CustomViewIndex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值