首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Carson带你学Android:自定义View Canvas类使用教程

前言 自定义View是Android开发者必须了解的基础;而Canvas类的使用在自定义View绘制中发挥着非常重要的作用 网上有大量关于自定义View中Canvas类的文章,但存在一些问题:内容不全.../ 方法2 // 通过传入装载画布Bitmap对象创建Canvas对象 // CBitmap上存储所有绘制在Canvas的信息 Canvas canvas = new Canvas(bitmap) /...- 最易懂的自定义View原理系列(4) 4.2.1 绘制颜色 作用:将颜色填充整个画布,常用于绘制底色 具体使用 // 传入一个Color类的常量参数来设置画布颜色 // 绘制蓝色...bitmap = BitmapFactory.decodeStream(is); is.close(); 绘制Bitmap 绘制Bitmap共有四种方法: // 方法1 public...画布裁剪 即从画布上裁剪一块区域,之后仅能编辑该区域 特别注意:其余的区域只是不能编辑,但是并没有消失,如下图 裁剪共分为:裁剪路径、裁剪矩形、裁剪区域 // 裁剪路径 // 方法1 public

2.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

Android 后台生成长图并分享示例(非长截图)

2.用户展示界面和最终生成的长图,布局完全不一样,所以不能通过直接将view转换成bitmap,或者长截图来实现。 3.生成的长图,头部加上公司logo,尾部加上二维码。 难点分析: 1.后台进行。...xml布局文件: (布局中需要包含的是头部view、底部view等宽高固定的view;文字等高度wrap_content的view需要在代码中动态绘制出来,不然高度会有问题,下文有说明) public...、底部view、中间文字内容、中间图片,以及其他view的总高度(px)和宽度(px); b.创建一个空白的bitmap使用bitmap的createBitmap方法,传入第一步计算得到的宽高,Config..._565);// 创建所需大小的bitmap Canvas canvas = new Canvas(bitmapAll);// 创建空白画布 canvas.drawColor(Color.WHITE)...从顶部到底部的顺序,一块块绘制画布上; d.全部view绘制完毕后,保存bitmapAll到本地文件,如需压缩,可压缩到指定大小和尺寸; e.进行分享的操作。

1.2K51

Canvas类的最全面详解 - 自定义View应用系列

前言 自定义View是Android开发者必须了解的基础;而Canvas类的使用在自定义View绘制中发挥着非常重要的作用 网上有大量关于自定义View中Canvas类的文章,但存在一些问题:内容不全...(bitmap) // 方法3 // 通过重写View.onDraw()创建Canvas对象 // 在该方法里可以获得这个View对应的Canvas对象 @Override protected...过程- 最易懂的自定义View原理系列(4) 4.2.1 绘制颜色 作用:将颜色填充整个画布,常用于绘制底色 具体使用 // 传入一个Color类的常量参数来设置画布颜色 // 绘制蓝色...bitmap = BitmapFactory.decodeStream(is); is.close(); 绘制Bitmap 绘制Bitmap共有四种方法: // 方法1 public...画布裁剪 即从画布上裁剪一块区域,之后仅能编辑该区域 特别注意:其余的区域只是不能编辑,但是并没有消失,如下图 ?

2.9K81

3.3 自定义控件基础 之 View绘制

---- 当测量好了一个View之后,我们就可以简单地重写onDraw()方法,并在Canvas对象上来绘制所需要的图形。首先我们来了解一下利用系统2D绘图API所必须要使用到的Canvas对象。...这是因为传进去的bitmap与通过这个bitmap创建的Canvas画布是紧紧联系在一起的,这个过程我们称之为装载画布。 这个bitmap用来存储所有绘制在Canvas上的像素信息。...在View类的onDraw()方法中,通过下面这段代码,我们可以了解到canvas与bitmap直接的关系。首先在onDraw方法绘制两个bitmap,代码如下所示。...mCanvas.drawXXX 通过mCanvas将绘制效果作用在了bitmap2上,再刷新View的时候,就会发现通过onDraw()方法画出来的bitmap2已经发生变化,这就是因为bitmap2承载了在...虽然我们也使用了Canvas的绘制API,但其实并没有将图形直接绘制在onDraw()方法指定的那块画布上,而是通过改变bitmap,然后让View重绘,从而显示改变之后的bitmap

44540

Android 自定义view之画图板实现方法

简单说一下构造方法。一个参数的构造方法是在代码中 new 时用到,2个参数的构造方法在布局xml中用到,3个参数的基本就是自定义view类中使用,大概就是这样。...= -1) { //如果设置了图片,使用图片宽 width = bitmap.getWidth(); } else { //没有设置图片并且也没给准确的view宽高 设置一个宽默认值 width = 500...(测量模式),计算出整个控件的宽高 2.通过canvas.drawBitmap在画布上画出bitmap,同时 new 出画笔 Paint 给它设置颜色,粗细等属性 注意: 1.onDraw()方法在每次调用...invalidate(),或者视图变化时都会重走,所以不能在里面 new 东西. 2.有一个int[]类型的数组 bmPixels,这里大概说一下是个什么意思,具体的解释在Bitmap类getPixels...写到这里,在xml布局中使用这个view,已经能画一画了 我们的画笔Paint类,可以指定颜色,粗细,模式,等等,这样我们就可以写一些公开的方法,给它动态的设置这些属性,从而让画笔更加多样性。

74120

速读原著-Android应用开发入门教程(2D图形接口的程序结构)

图形系统最核心的一个类,处理 onDraw()调用 主要绘制的设置和操作在 Paint(画笔)和 Canvas(画布)2 个类当中,使用这两个类就可以完成所有的绘制。...)方面的方法用于直接绘制位图,位图通常用一个 Bitmap 类来表示。...其中一些主要的方法如下所示: void drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) // 指定 Matrix 绘制位图 void drawBitmap...2、实现 View 的 OnDraw()函数,在其中使用 Canvas 的方法进行绘制使用 2D 的图形 API 的场合,自定义实现的 View 类型作为下层的绘制和上层的 GUI 系统中间层。...在 Android 中 Drawable 的含义就是可以仅仅是为了显示来使用的,与 View 的主要区别就在于 Drawable 不能从用户处获得事件的反馈。

67410

Android之Bitmap

显示位图 显示位图可以使用核心类Canvas,通过Canvas类的drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas。...Canvas对象,它是你用来绘制控件视觉界面的画布。...防止save后对Canvas执行的操作对后续的绘制有影响。 save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。...例如:我们先想在画布绘制一个右向的三角箭头,当然,我们可以直接绘制,另外,我们也可以先把画布旋转90°,画一个向上的箭头,然后再旋转回来(这种旋转操作对于画圆周上的标记非常有用)。...不进行Canvas的save和restore操作的话,所有的图像都是在画布旋转90°后的画布绘制的。当执行完onDraw方法,系统自动将画布恢复回来。

80330

Android-2D绘图

你可以获取View中的Canvas对象,绘制一些自定义形状,然后调用View. invalidate方法View重新刷新,然后绘制一个新的形状,这样达到2D动画效果。...Canvas:画布,用来直接在View绘制诸如矩形,圆形,文字,位图等图形。...防止save后对Canvas执行的操作对后续的绘制有影响。save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。...这里重载了onDraw方法,在其中使用setColor方法来设置画笔为红色,接着使用该画笔在Canvas画布绘制了直线和矩形。...---- drawBitmap方法绘制图像 【功能说明】该方法用于在画布绘制图像,通过指定Bitmap对象来实现。前面的各个方法都是自己绘制各个图形,但我们的应用程序往往需要直接引用一些图片资源。

5K20

Android 给图片加上水印的示例代码(支持logo+文字)

这样的一个view其实是一个自定义组合布局,关于如何实现组合布局的自定义view,可以参考这篇文章:Android 自定义View实践之组合控件实现布局的复用 有了水印的view之后,我们就可以利用以下这个方法.../** * 将一个view转换为Bitmap * @param view * @return */ public static Bitmap convertViewToBitmap(View view...()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); return bitmap; } 得到水印的view...//将该图片作为画布 Canvas canvas = new Canvas(newb); //在画布 0,0坐标上开始绘制原始图片 canvas.drawBitmap(src, 0, 0,...null); //在画布绘制水印图片 canvas.drawBitmap(watermark, paddingLeft, paddingTop, null); // 保存 canvas.save

1.1K51

Android开发笔记(十三)视图绘制的几个方法

三个可进行绘制方法 在自定义视图中,有三个函数可以重写用于界面绘制,在视图创建过程中,三个函数的执行顺序依次是:onLayout、onDraw、dispatchDraw。...由于该函数没有画布,因此只适合绘制现成的视图控件。 2、onDraw(Canvas canvas) :  自定义控件一般是重写onDraw方法,在画布绘制各种图形。...Canvas画布使用 Canvas是Android提供的图形操作类,Canvas的使用不难,多练习几次就熟练了。...下面列出Canvas的常用方法: 划定可绘制的区域(裁剪区域) 虽然本视图内的所有区域都是可以绘制的,但是有时候我们还是只想在某个圆形区域或者矩形区域内部画画,那么在绘制之前就得指定允许绘制的区域大小...save : 保存画布状态 restore : 恢复画布状态 画笔Paint的使用 在上述绘制图形函数当中,都需要指定Paint,Paint上定义了画笔的颜色、样式、粗细、阴影、下划线等等

1K30

Android自定义View实现旋转的圆形图片

自定义View是android开发的一个重要技能,用android提供的2/3D绘制相关类可以实现非常多炫酷的效果,需要实打实的编程基础。...实现方法是自己想的,但肯定不是最好的实现方法。 自定义View分四步。...一:自定义属性; 二:创建自定义View,在构造方法中拿到自定义属性; 三:重写onMeasure方法; 四:重写onDraw方法 先来个效果图 ?...bitmap画布中被旋转,画圆,返回后就是一个圆形的bitmap } private Handler handler = new Handler(); private Runnable...想要转的快一点就把每次旋转的角度调大一点,但是不能太大,否则效果很不好。一卡一卡的。这样就完成了这个自定义view,非常简单,但是我却折腾了好久,主要还是测量的时候不够细心。

1.5K60

一种android中实现“圆角矩形”的方法

内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角。...canvas,就是改变了画布的可绘制区域。...clip**系列方法就是对画布进行裁剪,之后的绘制(“可以简单地”认为之前通过canvas的绘制已经固定在画布对应存储图像的bitmap上了)都在裁剪后的区域中进行 使用clipPath()实现圆角矩形的完整代码如下...新layer相当于一个区域为传递的bounds的“新画布”,它关联一个bitmap(an offscreen bitmap,它是完全透明的),之后的绘制操作都在此bitmap上执行。...这里不严谨的认为:每个layer是一个canvas(画布),画布关联一个Bitmap存储最终绘制的内容。实际上不像现实中的画布或画纸,Canvas更像一个“绘图工具集”,包含直尺,圆规等绘图工具。

3.3K70

仿uc下部弹出菜单

思路说完了,看下实现的方法把,就是以一个bitmap画布,把另一个绘制到上面就行,这是我的方法,不知道还有没其他的方法,望大能给个更好的方法。...怎么把两个bitmap合成一个呢 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 /**          * 以一个Bitmap画布,画上一个Bitmap...         * @param canvasBitmap 作为画布Bitmap          * @param drawBitmap 要被绘制Bitmap          * @param...呢,我查了资料(百度,google),自己总结使用了下面的一个方法,也可以看 dyh7077063的博客 :http://dyh7077063.iteye.com/blog/970672,今天才看到的博客...现在只要循环调用把3张图绘制到一张bitmap中在生成drawable就好。

1.5K80

Android实现带描边的圆角图片

类,并添加构造方法和重写onDraw(Canvas canvas)方法,在里面进行作图: 在onDraw(Canvas canvas)方法中,首先定义一个画笔,并设置其使用抗锯齿功能,然后定义一张背景,...然后定义一个要绘制的圆角矩形的区域,并将画布在X轴上平移40像素,在Y轴上平移20像素,再绘制一个黑色的2像素的圆角矩形,作为图片的边,最后绘制一个使用BitmapShader渲染的圆角矩形图片,具体代码如下...{ private float view_width=300; private float view_height=300; public MyView(Context context) {...(bitmap_bg, 0, 0,paint);//绘制背景 RectF rect=new RectF(0,0,280,180); canvas.translate(40, 20);//将画布在...BitmapShader bs=new BitmapShader(bm,TileMode.REPEAT,TileMode.MIRROR); paint.setShader(bs);//设置渲染对象 //绘制一个使用

2.2K10

uniapp H5 画布自定义海报实现长按识别,分享,转发

前端使用uniapp制作H5自定义海报,本来以为挺简单的一常用功能画布,因为之前也在 H5 和小程序做过类似功能,所以直接上手干了,没想到还是遇到了一些坑,特此记录希望能够帮到大家。...uni.createCanvasContext('myCanvas'); 所有数据信息都由后端传过来,下面关于图片素材有两种情况, 1.如果图片允许跨域,可以通过 uni.getImageInfo 方法获取图片路径放到画布里面...开发者工具可能可以正确画布出来并导出为图片,但是手机画布导出的时候就会报错,这个时候就需要转成base64 了,先尝试用代码转,如果不能转,就在站点 在线转换,然后把base64保存到文件里面。...有人可能想到把图片放到代码包里面做成本地图片,就绕过跨域问题了,但是这个方法我尝试的时候发现小程序可以,H5不可以,很遗憾。如果有H5本地图片画布成功的也可以跟我分享一下经验,谢谢。  ..."> import { IMAGES_PATH }

3.3K10
领券