安卓自定义View基础-绘制点、线、矩形、圆形等
来源:互联网 发布:轩辕剑崆峒印进阶数据 编辑:程序博客网 时间:2024/06/03 20:00
为什么要自定义View?因为我们在开发中,经常有各种各样的需求,但是原生的控件毕竟只能满足我们常用的需求,所以我们需要根据自身当前的需求来定制我们的View,话不多说,一步一步来吧。
1.创建类:
创建一个类,暂且将这个类命名为CustomView,并继承View,此时会提示需要重载它的构造函数,我们可以看到View的构造函数如下(四种):
public CustomView(Context context) {super(context);} public CustomView(Context context, @Nullable AttributeSet attrs) {super(context, attrs); } public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);} public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {super(context, attrs, defStyleAttr, defStyleRes);}
第四个构造函数我们先不考虑,是API21添加的
第三个构造函数的第三个参数一般也用不着,暂时不看
第二个构造函数一般在layout文件中使用的时候会调用,关于它的所有属性(包括自定义属性)都会包含在attrs中传递进来。
第一个构造函数一般在直接New一个View的时候调用。
比如说:
以下情况会调用第一种构造函数:
//在Activity中CustomView customView = new CustomView(this);
以下情况会调用第二种构造函数:
//在layout文件中 - 格式为: 包名.View名<com.zmj.study.CustomView android:layout_width"wrap_content" android:layout_height"wrap_content"/>
2.Canvas:
顾名思义,是一个画布,我们可以在画布上绘制我们想要的图形,它可以是一个点、线、矩形、圆形等。
我们先重写父类onDraw方法:
@Overrideprotected void onDraw(Canvas canvas) { super.onDraw(canvas);}
然后我们先试试使用cancas绘制一个背景:
//绘制红色背景canvas.drawColor(Color.RED);
Activity完整代码如下:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在Activity中 CustomView customView = new CustomView(this); setContentView(customView); }}
效果如下:
2.创建画笔:
/*** 1.创建一个画笔*/private Paint mPaint;/*** 2.初始化画笔*/private void initPaint() { mPaint = new Paint(); //设置画笔颜色 mPaint.setColor(Color.BLACK); //STROKE //描边 //FILL //填充 //FILL_AND_STROKE //描边加填充 //设置画笔模式 mPaint.setStyle(Paint.Style.FILL); //设置画笔宽度为30px mPaint.setStrokeWidth(30f);}
创建完画笔,就可以使用画笔在画布Canvas上绘制了。
3.绘制:
绘制点:
绘制一个点:
//在坐标200(X),200(Y)处绘制一个点canvas.drawPoint(200, 200, mPaint);
绘制一组点:
//绘制一组点,坐标一一对应canvas.drawPoints(new float[]{ 500, 500, 500, 600, 500, 700}, mPaint);
效果如下:
绘制直线(两点确定一线):
//绘制一条直线(两点确定一线)canvas.drawLine(300, 300, 500, 600, mPaint);//绘制一组线canvas.drawLines(new float[]{ 100,800,500,800, 100,1000,500,1000},mPaint);
效果如下:
绘制矩形:
//第一种:canvas.drawRect(100, 100, 800, 400, mPaint);//第二种:canvas.drawRect(new Rect(100, 100, 800, 400), mPaint);//第三种:Rect和RectF的区别就是一个是int一个是浮点型canvas.drawRect(new RectF(100, 100, 800, 400), mPaint);
效果如下:
绘制圆形矩形:
//第一种:rx 80 ry 70canvas.drawRoundRect(new RectF(100, 100, 800, 400), 80, 70, mPaint);//第二种://必须>=API21canvas.drawRoundRect(100,100,800,400,30,30,mPaint);
效果如下:
绘制椭圆:
//第一种:canvas.drawOval(new RectF(100, 100, 800, 400), mPaint);//第二种:canvas.drawOval(100, 100, 800, 400, mPaint);
效果如下:
绘制圆形:
//绘制圆形:圆心坐标在500*500,半径是400canvas.drawCircle(500, 500, 400, mPaint);
效果如下:
绘制圆弧:
//第一种:起始角度为0度,扫过90度的圆弧 false不使用中心点canvas.drawArc(new RectF(100, 100, 600, 600), 0, 90, false, mPaint);//第二种:起始角度为0度,扫过90度的圆弧 true使用中心点canvas.drawArc(new RectF(100, 100, 600, 600), 0, 90, true, mPaint);
效果如下:
false不使用中心点:
true使用中心点:
总结:
上述全部是自定义View的基本用法,但是我相信那些复杂的View也是通过基础来构思的,慢慢来吧。
源码下载
0 0
- 安卓自定义View基础-绘制点、线、矩形、圆形等
- 安卓自定义View基础05-Canvas之基础图形绘制,点,线,矩形,圆,椭圆,弧形等
- Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)
- Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)
- 安卓自定义View基础-绘制饼图
- 自定义View绘制圆形进度条
- 安卓自定义view绘制尺寸
- 实现自定义圆形、圆角矩形View
- 自定义圆形、圆角矩形View
- 自定义view圆形进度条,矩形与二维码
- 自定义View绘制基础
- 自定义View(使用canvas画圆,线,矩形[钟表,圆形下载,矩形下载,弧形下载])
- 安卓开发之自定义View------> 圆形头像ImageView
- andriod自定义View绘制形, 圆形, 三角形,...
- 安卓绘制圆形图片
- IOS绘制各种图形(三角形,圆形,矩形,椭圆等)
- 安卓自定义View基础-坐标系
- 安卓自定义View基础-颜色
- MyBatis五动态语句
- 生成树计数(草稿)
- 《直播疑难杂症排查》之:首开慢
- python 通过函数无返回的修改数据结构,在函数外部,数据结构也可被修改
- Android-Adapter适配器
- 安卓自定义View基础-绘制点、线、矩形、圆形等
- Android DataBinding(数据绑定)详解(二)
- Spring简单介绍
- Ubuntu开启Samba服务
- [leetcode: Python] 110. Balanced Binary Tree
- 文件文件夹路径
- 矢量化编程
- Spring MVC 下设置默认访问页面的3种方式
- 1.4参数传递与返回值(1)