自定义View(一)

一,自定义View的基本步骤:

(1)定义一个类,继承View

(2)复习View的onDraw()函数

3)在onDraw()当中使用Canvas和Paint对象绘制图形

注意:全部完成后,需要在主类中去掉setContentView(R.layout.main_avtivity);代码

改为:用View作为参数,即:

假如我们刚刚自定义的类为MyView,

MyView myView = new MyView(this);

setContentView(myView);

即可。

二,在onDraw函数中

(1)需先生成画笔对象

Paint paint = new Paint();

(2)在用Canvas画布来绘制图形

canvas.drawXXX(.......);

三,Paint的设置方法(常用)

setAntiAlias:设置画笔的锯齿效果setColor:颜色(Color.颜色)

setARGB: 设置a,r,g,b值:alpha,red,green,bluesetAlpha: 透明度

setTextSize: 字体尺寸 setStyle:风格,即空心或者实心(Style.FILL或者默认:代表实心,Style.STROKE代表空心)

setStrokeWidth:空心边框宽度

getColor:得到画笔的颜色, getAlpha:得到画笔的透明度


四:Canvas绘制图形的常用方法

(1)直线

drawLine(float startX,  float startY,  float stopX,  float stopY, Paint paint)

分别是:起始点,终点,画笔对象,是从左上角开始算

(2)矩形

drawRect(float left  ,  float top  ,  float right  ,  float bottom  , Paint paint)

分别是:左边距,上边距,右边距,下边距,画笔对象

(3)圆形

drawCircle(float cx  ,  float cy  ,   float  radius , Paint paint)

分别是:圆心位置,半径,画笔对象

(4)字符串

drawText(String text  ,  float  x   ,   float  y   , Paint  paint)

分别是:内容,左边界,y代表基准线,画笔对象

基准线:我们小时候学26个字母时写的四线三行,以小写的a,c m ,n 等占中间一行的下边(即第3条线)为基准线

(5)绘制图片(图形)

drawBitmap(Bitmap bitmap  ,  float left  ,  float  top  ,   Paint  paint)

分别是:图片对象(或者图形) , 左边距,上边距,画笔对象

获取图片:BitmapFactory.decodeResource(getResources()  ,   R.drawable.图片   )



举例子:

(1)主类

package com.cai.maiyu.shudu;


import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
public class MainActivity extends ActionBarActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        //用View对象作为参数
       MyView myView = new MyView(this);
       setContentView(myView);

    }
}


(2)自定义(类)View:

package com.cai.maiyu.shudu;


import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;


import static com.cai.maiyu.shudu.R.*;


/**
 * Created by maiyu on 2016/4/11.
 * 自定义View,基本步骤:
 * 1.定义一个类继承View
 * 2.复写View的onDraw函数
 * 3.在onDraw当中使用Canvas和Paint对象绘制图形
 */
public class MyView extends View {
    public MyView(Context context) {
        super(context);
    }
    //复写View的onDraw函数




    @Override
    protected void onDraw(Canvas canvas) {
        //生成一个画笔对象
        Paint paint = new Paint();
        //设置画笔的颜色属性
        //paint.setColor(Color.BLUE);


        //调用canvas的方法来画
        //canvas.drawRect(10, 10, 10, 10, paint);
        //canvas.drawLine(20, 20, 200, 200, paint);
        //设置透明度
       // paint.setAlpha(20);
        //设置透明度,和颜色:a,r,g,b
        paint.setARGB(150, 0, 100, 200);
        //设置风格:空心
        paint.setStyle(Paint.Style.STROKE);
        //设置空心边框宽度
        paint.setStrokeWidth(50);
        //画一个矩形
        canvas.drawRect(400, 300, 600, 500, paint);


        //画一个圆形
        canvas.drawCircle(500, 600, 50, paint);


        Paint paint2 = new Paint();
        paint2.setColor(Color.RED);
        paint2.setTextSize(100);


        //画字符串
        canvas.drawText("Root", 400, 200, paint2);
        //设置字体大小


        //画一条线
        canvas.drawLine(0, 200, 2000, 200, paint2);


        //绘制图片
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 200, 800, paint);
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 600, 800, paint);
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 200, 1200, paint);
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 600, 1200, paint);
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 400, 1000, paint);
        super.onDraw(canvas);
    }
}




结果:自定义View(一)_第1张图片

图片不知上传成功了没


你可能感兴趣的:(自定义View(一))