一,自定义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);
}
}