自定义View绘制图形一(绘制静态图形)

来源:互联网 发布:80 8080端口 编辑:程序博客网 时间:2024/06/06 00:32

首先定义一个CustomView继承View,然后加入两个构造方法:
public CustomView(Context context) {
//此构造方法是为了在代码中实例化对象使用
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
//此方法是在布局文件中使用
super(context, attrs);
}
在添加完方法之后就算是一个简单的自定义View了,只不过这个自定义View除了拥有一些系统VIew自带的属性外什么都做不了!
今天我们主要说一下,onDraw(Canvas canvas)这个用来绘制View视图界面的方法!要想绘制图形,需要两个类,一个是Paint还有一个就是方法里面的那个Canvas,这个两个类一个相当于画笔一个相当于画布!下面是我代码写的一些实例代码,已经有很详细的注解了:
@Override
protected void onDraw(Canvas canvas) {
/**
* mPaint 画笔
*/
mPaint = new Paint();
mPaint.setTextSize(30);
mPaint.setColor(0xffff0000);
float size = mPaint.measureText(“自定义View”); //测量字符串的宽度

    /**     * canvas 画布     * 绘制文字     * @NonNullString text,  要绘制的文字   “自定义View”     * int start,  所要绘制文字的开始下标     * int end,   所要绘制文字的结束下标     * float x,   绘制文字所在view的X坐标     * float y,   绘制文字所在view的Y坐标(以文字的基准线为准,就是说当Y坐标为0时,文字会超出View消失)!     * @NonNull Paint paint  画笔 (The paint used for the text (e.g. color, size, style))     *     */    canvas.drawText("自定义View", 0, 30, mPaint);    canvas.drawText("自定义View", 0, 2, 0, 60, mPaint);    mPaint.setStyle(Paint.Style.STROKE);  // 设置绘制图形为空心的    /**     * 绘制圆形     * float cx, 原点X坐标     * float cy, 原点Y坐标     * float radius, 半径     * @NonNull Paint paint     */    canvas.drawCircle(10, 80, 10, mPaint);    /**     * 绘制图片     * @NonNull Bitmap bitmap,     * float left,  X坐标     * float top,  Y坐标     * @Nullable Paint paint     */    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);    canvas.drawBitmap(bitmap, 100, 100, mPaint);    /**     * float left,  矩形左侧相对view左侧的距离     * float right,  矩形右侧相对view左侧的距离     * float top,  矩形顶端相对view顶端的距离     * float bottom,  矩形底端相对view底端的距离     * 矩形的高 = bottom-top     * 矩形的宽 = right - left     * @NonNull Paint paint     */    canvas.drawRect(100, 200, 300, 400, mPaint);    /**     * float startX,     * float startY,     * float stopX,     * float stopY,     @NonNull Paint paint     */    canvas.drawLine(100, 450, 300, 500, mPaint);}canvas除了能绘制这些图形之外还能绘制很多的东西,有时间可以在自己尝试着去做绘制几种,使用的方法大致都相同,有不会的可以去百度或看看官方文档!最后在XML布局资源中引用你这CustomView就可以了,或者直接在代码中实例化!  <com.example.a20161005.custormview.v1.MyView    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#00ff00"    android:visibility="gone"    />
0 0
原创粉丝点击