自定义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" />
- 自定义View绘制图形一(绘制静态图形)
- 自定义view--绘制图形
- 自定义View绘制各种图形
- 自定义View进阶-Canvas之绘制图形
- 自定义View进阶-Canvas之绘制图形
- 自定义View-Canvas之绘制图形
- 自定义View绘制简单基本图形
- 自定义view(二)canvas与图形绘制
- 自定义View之绘图篇(一):基础图形的绘制
- Canvas绘制图形(一)
- jfreechart图形绘制(一)
- 绘制自定义的图形
- Android Study之自定义View进阶路:掌握绘制基本图形(一)
- 使用 UIBezierPath+CAShapeLayer 实现不在View层绘制自定义图形
- Android中使用自定义View实现shape图形绘制
- 安卓自定义View进阶-Canvas之绘制图形
- 自定义VIEW(学习笔记三)-基本图形的绘制
- 安卓自定义View进阶-Canvas之绘制图形
- Struts2框架剖析
- Faster rcnn 学习笔记
- 主广告05-图片分层出现-兼容IE8和Chrome浏览器
- [李景山php]每天TP5-20170122|thinkphp5-Process.php-4
- MySQL使用命令备份和还原数据库
- 自定义View绘制图形一(绘制静态图形)
- iOS二维码扫描
- Vc++课程设计—用户猜测藏物位置
- 低内存下MySql 5.6.33 安装后启动出现1067错误的解决方法
- 网络流一般建模方式——最小割篇
- 我的学习心得
- css3 3D特效
- Vuex文档
- django shell 方式删除数据