Android 自定义 View 简单指南(二)

栏目: IOS · Android · 发布时间: 7年前

内容简介: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 的宽高就是画布的宽高,记住这一点,一面绘制的时候超出边界。形象如 下图所示。

Android 自定义 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);
    }
复制代码

最后显示效果如下:

Android 自定义 View 简单指南(二)

为什么需要测量

最后我们在 Activity 布局中将自定义 View 的高度改为 wrap_content ,然后看一下效果。

为什么出出现这种效果呢?????高度明明时 wrap_content 为什么会充满屏幕变?

Android 自定义 View 简单指南(二)

以上所述就是小编给大家介绍的《Android 自定义 View 简单指南(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

平台革命:改变世界的商业模式

平台革命:改变世界的商业模式

[美]杰奥夫雷G.帕克(Geoffrey G. Parker)、马歇尔W.范·埃尔斯泰恩(Marshall W. Van Alstyne)、桑基特·保罗·邱达利(Sangeet Paul Choudary) / 志鹏 / 机械工业出版社 / 2017-10 / 65.00

《平台革命》一书从网络效应、平台的体系结构、颠覆市场、平台上线、盈利模式、平台开放的标准、平台治理、平台的衡量指标、平台战略、平台监管的10个视角,清晰地为读者提供了平台模式最权威的指导。 硅谷著名投资人马克·安德森曾经说过:“软件正在吞食整个世界。”而《平台革命》进一步指出:“平台正在吞食整个世界”。以平台为导向的经济变革为社会和商业机构创造了巨大的价值,包括创造财富、增长、满足人类的需求......一起来看看 《平台革命:改变世界的商业模式》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具