做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,也可以自定义一个View,用它的Canvas。不同的时,Android里没有Graphics,而用 Paint代之,当然用法也稍有不同。以下是自定义View的一段代码:
@Override
public void onDraw(Canvas canvas) {
// 首先定义一个paint
Paint paint = new Paint();
// 绘制矩形区域-实心矩形
// 设置颜色
paint.setColor(Color.WHITE);
// 设置样式-填充
paint.setStyle(Style.FILL);
// 绘制一个矩形
canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
// 绘空心矩形
// 设置颜色
paint.setColor(Color.RED);
// 设置样式-空心矩形
paint.setStyle(Style.STROKE);
// 绘制一个矩形
canvas.drawRect(new Rect(10, 10, 50, 20), paint);
// 绘文字
// 设置颜色
paint.setColor(Color.GREEN);
// 绘文字
canvas.drawText(str, 30, 30, paint);
// 绘图
// 从资源文件中生成位图
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// 绘图
canvas.drawBitmap(bitmap, 10, 10, paint);
}
以上需要注意的有三点:
1、Android中的Rect和java中的可能稍有区别,前两个参数是左上角的坐标,后两个参数是右下角的坐标(不是宽度和高度);
2、Style.STROKE和Style.FILL外边的像素数是有区别的,这点和java里一样;
3、绘文字时,设置的坐标点为(30,30),但绘出来后你会发现,文字的左上角坐标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到坐标点的意义。
分享到:
相关推荐
ondraw不执行,请大神帮忙
自定义VIew之onDraw方法Demo,以及总结;
android:layout_width=match_parent android:layout_height=match_parent android:clipChildren=false> <ImageView android:layout_width=match_parent android:layout_height=match_parent an
以下是对Android通过onDraw实现在View中绘图操作的示例代码进行了详细的分析介绍,需要的朋友可以过来参考下
Android 中View.onDraw(Canvas canvas)的使用方法 View通过View.onDraw(Canvas canvas)来Draw. 我们可以定义自己的继承于View的TestView,然后重载View.onDraw(Canvas canvas). 对于自定义的TestView如何与Activity...
android中图像在画布上放大缩小时,图像的边框大小没有改变,很是疑惑,应该怎样解决呢?接下来为您详细介绍,感兴趣的的朋友可以了解下
OnDraw--paint.setColorFilter,实现PatternView的画 点 和圆环 效果
本文实例为大家分享了Android绘制钟表的具体代码,供大家参考,具体内容如下 首先要画一个表,我们要先知道步骤如何: 1、仪表盘—-外面最大的圆盘 2、刻度线—-四个长刻度和剩下的短刻度 3、刻度值—-对应的刻度下...
Android自定义View实现圆形进度条。源码非常简单、可以在View的onDraw方法上自己做一些修改。很容易达到想要的效果。
如何用onDraw和onMeasure自定义view
android通过onDraw自己绘制雷达效果。
android 中用ondraw方法或折线图
view.onDraw–>canvas.draw–>rasterizer–> view.onDraw–>canvas.draw- openGL–>GPU–>rasterizer-> 1. Canvas.draw 绘制 录制 2. view 3. GPU JANK Drawing without VSync JellyBean 4.1 Drawing with VSYnc ...
Android Touch Circle Activity触屏操作测试附源代码示例,触摸圆点: //此方法重画时调用 @Override protected void onDraw(Canvas canvas) { //canvas可以看做画板 super.onDraw(canvas); //创建...
android 可滑动的刻度尺,核心方法在ondraw和onTouchEvent方法中
CustomLoading For Android Android开发中我们经常会用到各种各样的loading,那么自己总结了常用的loading并分享出来。首先先来看下具体效果图: ...第四和第五个是自定义的一个组件,通过onDraw来画出来的效果;
WheelView Android时间、日期滚轮选择控件,继承View,重写onDraw()方法,轻量实现
25. protected void onDraw(Canvas canvas) { 26. 27. } 28. @Override 29. public boolean onMotionEvent(MotionEvent event) { 30. Log.i(MyAndroid.ACTIVITY_TAG, "============================="); ...