Android 自定义View之自绘控件
2016-09-09 17:18
423 查看
首先要提前声明一下,我对于自定义View的理解并不是很深,最近啃了几天guolin博主写的关于自定义View的博客,讲的非常棒,只不过涉及到源码和底层的一些东西,我自己就懵逼了,目前只是会了关于自定义View的简单使用,不过还是要写出来,当做练习了,哈哈~对于一些没有接触过的初学者,希望会有所帮助,共同成长;
按类型,自定义View可以分为三种:自绘控件、组合控件、继承控件,对于这三种类型,我会写三篇博客来分别介绍和使用。
自定义View中有三个非常重要的方法,分别为:
onMeasure():如果需要改变view的大小,那么需要重写onMeasure()方法。
onLayout():如果需要改变View的(在父控件的)位置,那么需要重写onLayout()方法。
onDraw() :如果仅需要绘制View的图像,那么需要重写onDraw()方法。(这也是最常用的重写方式。)
1、 自绘控件:自己通过onDraw()方法进行绘制控件要显示的内容,主要涉及到的参数有paint画笔和canvas画布。
canvas绘制的常用方法有:
drawColor() 填充颜色
drawLine() 绘制线
drawLines() 绘制线条
drawOval() 绘制圆
drawPath() 绘制路径
drawPicture() 绘制图片
drawPoint() 绘制点
drawPoints() 绘制点
drawRGB() 填充颜色
drawRect() 绘制矩形
drawText() 绘制文本
drawTextOnPath() 在路径上绘制文本
2、组合控件:组合控件就是将系统原生的一些控件进行组合,形成一个新的控件,比如APP内的标题栏
3、继承控件:继承控件指的是自定义一个View,然后继承一个现有的控件(比如继承iamgeView),这样的好处是不但可以保留imageView原有的功能和属性,还可以根据需求添加一些新的功能。
首先第一篇,自定义View之自绘控件,Demo中会绘制圆形、矩形和一行text,因为只是简单的进行绘制,所以重写onDraw()这一个方法就够了,哇哈哈~~~
先看一下效果图:
![](https://img-blog.csdn.net/20160909153511567)
第一步要做的是新建一个类,继承自View,添加构造函数,在构造方法里面初始化画笔,再重写onDraw()方法,在onDraw()方法中通过画笔和画布完成绘制;
第二步,绘制完成之后,将该自定义View添加到你需要的布局文件中;
按类型,自定义View可以分为三种:自绘控件、组合控件、继承控件,对于这三种类型,我会写三篇博客来分别介绍和使用。
自定义View中有三个非常重要的方法,分别为:
onMeasure():如果需要改变view的大小,那么需要重写onMeasure()方法。
onLayout():如果需要改变View的(在父控件的)位置,那么需要重写onLayout()方法。
onDraw() :如果仅需要绘制View的图像,那么需要重写onDraw()方法。(这也是最常用的重写方式。)
1、 自绘控件:自己通过onDraw()方法进行绘制控件要显示的内容,主要涉及到的参数有paint画笔和canvas画布。
canvas绘制的常用方法有:
drawColor() 填充颜色
drawLine() 绘制线
drawLines() 绘制线条
drawOval() 绘制圆
drawPath() 绘制路径
drawPicture() 绘制图片
drawPoint() 绘制点
drawPoints() 绘制点
drawRGB() 填充颜色
drawRect() 绘制矩形
drawText() 绘制文本
drawTextOnPath() 在路径上绘制文本
2、组合控件:组合控件就是将系统原生的一些控件进行组合,形成一个新的控件,比如APP内的标题栏
3、继承控件:继承控件指的是自定义一个View,然后继承一个现有的控件(比如继承iamgeView),这样的好处是不但可以保留imageView原有的功能和属性,还可以根据需求添加一些新的功能。
首先第一篇,自定义View之自绘控件,Demo中会绘制圆形、矩形和一行text,因为只是简单的进行绘制,所以重写onDraw()这一个方法就够了,哇哈哈~~~
先看一下效果图:
第一步要做的是新建一个类,继承自View,添加构造函数,在构造方法里面初始化画笔,再重写onDraw()方法,在onDraw()方法中通过画笔和画布完成绘制;
package com.example.wgh.customview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; /** * Created by 080249 on 2016/9/9. */ public class MyView extends View { private Paint mPaint = null ; public MyView(Context context, AttributeSet attrs) { super(context, attrs); //初始化画笔 mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //设置画笔颜色 mPaint.setColor(Color.BLUE); /** * 通过canvas绘制一个圆形 * 5个参数分别对应: * 100f:右 X轴坐标 * 300f:上 Y轴坐标 * 400f:左 X轴坐标 * 600f:下 Y轴坐标 * mPaint:画笔 */ //drawOval()这个方法写完之后可能会报红,原因是要求minSdkVersion为21,去gradle文件里修改一下就好了 canvas.drawOval(100, 300, 400, 600, mPaint); /** * canvas绘制一行字 */ mPaint.setTextSize(60); mPaint.setColor(Color.RED); canvas.drawText("自定义View", 200, 200, mPaint); /** * canvas绘制一个矩形 * 对应的参数和绘制圆形是一样的,都是右、上、左、下对应的坐标 */ mPaint.setColor(Color.CYAN); canvas.drawRect(0,0,200,100,mPaint); } }
第二步,绘制完成之后,将该自定义View添加到你需要的布局文件中;
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> //这里注意要写全路径哦 <com.example.wgh.customview.MyView android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
相关文章推荐
- Android学习自定义View(三)——自绘控件和组合控件
- Android学习自定义View(三)——自绘控件和组合控件
- Android笔记--简单的自定义View之自绘控件
- Android自定义View----1. 自定义自绘控件
- Android学习摘记——简单的自定义View(自绘控件)
- Android的自定义View---自绘控件
- Android 自定义View——自绘控件
- Android 自定义View控件画圆
- Android自定义View 简单实现多图片选择控件
- android自定义Tabs控件,基于ScrollView+ViewPager实现。
- Android自定义View,高仿QQ音乐歌词滚动控件!
- Android怎么使用字体图标 自定义FontTextView字体图标控件-- 使用方法
- Android 自定义View 三板斧之二——组合现有控件
- android 自定义view 仿电视节目选择控件与字体发光效果
- Android 自定义View 三板斧之一——继承现有控件
- Android自定义评分控件:RatingStarView
- Android UI开发专题(四) View自绘控件
- Android自定义的轮播图控件,基于ViewPager
- Android自定义LinearLayout实现左右侧滑菜单,完美兼容ListView、ScrollView、ViewPager等滑动控件
- Android自定义控件之继承ViewGroup创建新容器