内容简介:View 的绘制与现实中的绘画是同样的道理,现在中我们想要进行绘画至少需要两样物品:画笔与白纸,这两项物品在 Android 系统也给我们提供了—— Paint 与 Canvas;接下来我们初始化画笔 Paint 为下面的绘制空心圆坐准备。其实画笔有许多的作用,可以绘制形状、路径和 bitmap。
View 的绘制与现实中的绘画是同样的道理,现在中我们想要进行绘画至少需要两样物品:画笔与白纸,这两项物品在 Android 系统也给我们提供了—— Paint 与 Canvas;
接下来我们初始化画笔 Paint 为下面的绘制空心圆坐准备。
public class FreeStyleView extends View {
// 画笔,用于绘制空心圆
private Paint paint;
public FreeStyleView(Context context) {
super(context);
init();
}
public FreeStyleView(Context context,AttributeSet attrs) {
super(context, attrs);
init();
}
// 在构造方法中就将画笔初始化好,避免在 onDraw() 方法中初始化,因为系统会多次调用 onDraw()
private void init(){
// 实例化画笔,好比给自己准备了一支笔
paint = new Paint();
// 设置画笔模式,FILL 填充,STROKE 描边,意为画出来的画出来的形状是填充还仅仅是描边的形状
paint.setStyle(Paint.Style.STROKE);
// 设置画笔颜色
paint.setColor(Color.RED);
}
}
复制代码
其实画笔有许多的作用,可以绘制形状、路径和 bitmap。 详细看这里,建议最后看
画布坐标
和显示画图一样,我们需要准确的将期望绘制的内容绘制在画布上。现实中我们是以画布四周为基准的,在 Android 在 Canvas 中提供了类似于数学中直角坐标系一样的坐标系统,用于在绘制 View 内容时定位绘制位置,View 的整体坐标也是如此的。
画布坐标和直角坐标系类似,横坐标为 X 轴 纵坐标为 Y 轴 ,区别在于 画布坐标系的原点位于 View 的左上定点, Y 轴 的正方向位于 X 轴 的下方,同时 View 的宽高就是画布的宽高,记住这一点,一面绘制的时候超出边界。形象如 下图所示。
绘制圆形
很简单,在 onDraw() 中调用 canvas 的 drawCircle 函数,一次传入圆心点的x,y值、圆半径以及绘制该圆使用的画笔。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 绘制一个圆形
// getWidth 获取 View 的宽度
// getHeight 获取 view 的高度
canvas.drawCircle(getWidth()/2,getHeight()/2,getHeight()/2,paint);
}
复制代码
最后显示效果如下:
为什么需要测量
最后我们在 Activity 布局中将自定义 View 的高度改为 wrap_content ,然后看一下效果。
为什么出出现这种效果呢?????高度明明时 wrap_content 为什么会充满屏幕变?
以上所述就是小编给大家介绍的《Android 自定义 View 简单指南(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- spring security自定义指南
- 自定义 View 简单指南(一)
- CSS变量(自定义属性)实用指南
- mpvue中小程序自定义导航组件开发指南
- CSS变量(自定义属性)使用指南 — SitePoint
- 《Haskell趣学指南》笔记之自定义类型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Chinese Authoritarianism in the Information Age
Routledge / 2018-2-13 / GBP 115.00
This book examines information and public opinion control by the authoritarian state in response to popular access to information and upgraded political communication channels among the citizens in co......一起来看看 《Chinese Authoritarianism in the Information Age》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
UNIX 时间戳转换
UNIX 时间戳转换