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

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

下面采取自定义ImageView子类的形式提供案例来说明“Xfermode + Path”实现圆角矩形的思路。...理解上,就像你拿着剪刀沿着圆环路径裁剪画纸就可以裁剪出一个圆型画纸一样。 Canvas类的一些API是直接绘制内容的操作,另一些是针对canvas(画布)本身做设置的。...clip**系列方法就是对画布进行裁剪,之后的绘制(“可以简单地”认为之前通过canvas的绘制已经固定在画布对应存储图像的bitmap上了)都在裁剪后的区域中进行 使用clipPath()实现圆角矩形的完整代码如下...clipPath(),之后再继续绘制原本的图片,这样就保证了绘制的内容范围限制在裁剪后的“圆角矩形画布”中。...这里不严谨的认为:每个layer是一个canvas(画布),画布关联一个Bitmap存储最终绘制的内容。实际上不像现实中的画布或画纸,Canvas更像一个“绘图工具集”,包含直尺,圆规等绘图工具。

3.6K70

Android之Bitmap

显示位图 显示位图可以使用核心类Canvas,通过Canvas类的drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas。...(2)在原有位图的基础上,缩放原位图,创建一个新的位图:CreateBitmap(Bitmap source, int x, int y, int width, int height, Matrix m...例如:我们先想在画布上绘制一个右向的三角箭头,当然,我们可以直接绘制,另外,我们也可以先把画布旋转90°,画一个向上的箭头,然后再旋转回来(这种旋转操作对于画圆周上的标记非常有用)。...如图2所示: 从这两个图中,我们就能看到圆圈位置的明显差异。不进行Canvas的save和restore操作的话,所有的图像都是在画布旋转90°后的画布上绘制的。...当执行完onDraw方法,系统自动将画布恢复回来。save和restore操作执行的时机不同,就能造成绘制的图形不同。

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

    如何用Scratch 3绘制矢量图形 【Gaming】

    对象Object:画布上的圆、正方形或直线 箭头工具Arrow tool:使用此工具抓取、调整大小和旋转对象 节点工具Node tool:使用此工具添加、移动和选择节点 开始绘图 要开始绘图,请打开web...图片8.png 创建自定义精灵有两种方法: 若要创建一个全新的精灵,请使用并组合工具箱中的任何绘图工具。...警告:如果单击绘图屏幕底部的“转换为位图”按钮,则插图将变成像素化位图图像,并且无法将其还原为矢量。 画苹果形状 1. 选择一个空的精灵画布,然后选择圆形工具。通过单击空画布并拖动鼠标创建一个圆。...稍微向下降低原始上止点节点以创建缩进。 7. 继续调整和添加节点,直到对苹果形状满意为止。 绘制茎 1. 选择矩形工具。在画布上创建一个长而薄的矩形,在其中放置茎。 2....在你的Scratch项目中使用它,在Scratch网站上与其他Scratch用户共享它,最重要的是用vectors绘制出更酷的东西。

    5.6K00

    Android各种各样的Drawable-更新中

    只有在程序中需要动态的修改drawable的属性时,才需要使用具体的drawable类型提供的方法。 事实上xml中配置的节点和Drawable的实现类是一一对应的。...,当ColorDrawable被绘制到画布的时候会使用颜色填充Paint,在画布上绘制一块单色的区域。...* 但是在代码中必须要明确指出透明度(Alpha)代表的数据, * 如果省略了就表示完全透明的颜色,也就是说当绘制到画布上时,看不出有任何效果。...---- LayerDrawable LayerDrawable 管理一组drawable,每个drawable都处于不同的层,当它们被绘制的时候,按照顺序全部都绘制到画布上。...---- LevelListDrawable 管理一组drawable,每一个drawable都对应一个level范围,当它们被绘制的时候,根据level属性值选取对应的一个drawable绘制到画布上

    1K30

    【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )

    , 设置一张图片 , 会增加一次绘制 , 如果再给该 ImageView 组件设置背景颜色 , 那么又会增加一次绘制 , 那么该 ImageView 组件肯定过渡绘制了 ; 二、 Android 系统的渲染优化...GPU 存储纹理机制 : GPU 中的显存可以存储纹理资源 , 即多维向量图形资源 , 在渲染时 , 可以直接使用该存储的资源 , 不用每次都让 CPU 传递数据过来 ; 2....自定义组件过度绘制问题描述 : 自定义控件 , 在自定义的 onDraw 方法中 , 绘制多张图片 , 如果图片之间产生重叠 , 重叠绘制的部分就出现了过度绘制 ; 2....实现上述图片 A 在 Canvas 画布上绘制部分图片方式 : ① 完整画布 : onDraw 函数中的 Canvas canvas 参数是完整的画布 ; ② 取出图片 A 绘制部分的 Canvas...(); // 剪切画布 canvas.clipRect(left, top, right, bottom); ③ 在剪切后的画布中绘制图片 A : 在剪切后的画布中 , 绘制图片 A , 注意绘制完成后

    4.7K30

    了解 Android 的矢量图片格式:`VectorDrawable`

    因此,对于固定分辨率的位图,我们只了解每个像素的颜色,却不理解其中包含的内容。然而,矢量图像是通过在抽象大小的画布上定义一系列形状来描绘图像。 为什么使用矢量图?...矢量资源有三大好处,分别是: 好用 占用资源少 动态 好用 矢量图可以优雅的调整大小;这是因为它们将图像绘制在抽象大小的画布上,你可以放大或缩小画布,然后重新绘制对应尺寸的图像。...放大的位图(左)与放大的矢量图(右) 这就是为什么在 Android 上我们需要为不同密度的屏幕提供多个版本的位图资源: res/drawable-mdpi/foo.png res/drawable-hdpi...Android 在受限制的移动设备上运行,因此支持整个 SVG 规范并不是一个现实的目标。 然而,SVG 包含一个 路径规范,它定义了如何描述和绘制形状。使用此 API,您可以表达大多数矢量形状。...第二个 视口 大小定义虚拟画布,或者定义所有后续绘制命令的空间坐标。固有和视口尺寸可以不同(但应该以相同的比例)— 如果你需要,可以在 1*1 画布中定义矢量。

    2.5K30

    2014-11-6Android学习------Android 仿真翻页效果实现--------贝塞尔曲线(二)

    从绘制渐变左下到右上 GradientDrawable.Orientation BOTTOM_TOP 绘制渐变,从底部到顶部 GradientDrawable.Orientation...TOP_BOTTOM 从顶部至底部绘制渐变 GradientDrawable.Orientation TR_BL 从右上角到左下角的绘制渐变 我们首先看看效果,...mBitmap;//打开界面时的视图,上面的三个位图都是在这个初始的位图上绘制出来 private Canvas mCanvas;//画布 private Paint mBitmapPaint;/...mCanvas = new Canvas(mBitmap);//在这个背景上加载画布 mBitmapPaint = new Paint(Paint.DITHER_FLAG);//在画布上绘制背景的画笔...那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会对其他的元素进行影响 2))画出绿色部分的贝塞尔曲线以及阴影的效果

    1.5K10

    Android开发笔记(九十八)往图片添加部件

    最后结束添加,从布局容器的绘图缓存中获取位图,并保存为图片文件。获取位图后要注意两点: 1、先禁用布局容器的绘图缓存,这是为了清空绘图缓存,不然下次截图还是上次的位图;再启用布局容器的绘图缓存。...2、禁用绘图缓存的操作要延时执行,因为禁用绘图缓存会回收位图资源,如果这时在页面上展示该位图,就会报错位图已回收。 下面是给图片添加文本的效果截图: ?...,也是在触摸按下时给布局容器添加部件,即添加部件图像的ImageView。...,然后加入到布局容器中,其难点主要是自定义签名控件的实现上。...在高级使用场合,还得考虑能够回退写坏了的笔画,这需要建个路径数组,把签名每个步骤的路径都保存下来,在回退时就能按顺序依次回退。 另外一个值得注意的地方,是如何把画布清空。

    1.1K30

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

    第 9 章 2D图形接口的使用 在 GUI 系统中,图形 API 是比较底层的接口。...9.1 使用 2D图形接口的程序结构。 2D 图形的接口实际上是 Android 图形系统的基础, GUI 上的各种可见元素也是基于 2D 图形接口构建的。...; Canvas:画布,2D 图形系统最核心的一个类,处理 onDraw()调用 主要绘制的设置和操作在 Paint(画笔)和 Canvas(画布)2 个类当中,使用这两个类就可以完成所有的绘制。...2、实现 View 的 OnDraw()函数,在其中使用 Canvas 的方法进行绘制。 使用 2D 的图形 API 的场合,自定义实现的 View 类型作为下层的绘制和上层的 GUI 系统中间层。...事实上,使用 Android 的 2D API 的程序结构和实现一个自定义控件类似,但是它们的目的略有不同:使用2D API 主要是为了实现自由的绘制;自定义控件的目的是在应用程序中使用这些控件,包括可以在布局文件中使用甚至使用其属性

    74010

    自定义View学习——三种实现方式

    ---- 都说学习自定义View开发都是:动画->绘图->事件分发->自定义布局(View的绘制过程)->自定义控件;由此学习是一个我认为比较愉快的学习方向。...最常见的莫过于我们几乎每个页面布局中顶部的标题状态栏了,如果页面多起来要我们每个页面重复写相同的布局代码想必每个人都要疯吧,反正我是想撞墙,所以将标题状态栏抽离出来形成一个自定义的组合控件。...可以继承TextView,ImageView,LinearLayout等。...文章解释 3、自绘控件:新建类通过继承View或ViewGroup生成新控件,这种控件可以说是最难的一种了;在自定义控件内部,通过画笔(Paint)和画布(Canvas)绘制控件,需要掌握绘图知识,事件分发...()的含义是绘制子控件,所以原则来上讲,在绘制View控件时,我们是重写onDraw()函数 得出结论:在绘制View控件时,需要重写onDraw()函数,在绘制ViewGroup时,需要重写dispatchDraw

    76230

    自定义圆形图片

    , TileMode); 调用这个方法来产生一个画有一个位图的渲染器(Shader) 看参数 bitmap 即在渲染器内的位图 TileMode ,分为三类 1、CLAMP  :如果渲染器超出原始边界范围...使用这个类的目的,就是把它的对象设置给Paint ,而Paint会根据TileMode进行绘制位图 二、实现圆形图片步骤 首先,ImageView和ImageButton需要图片, 有两种生成圆形图片的方法...1、自定义View继承ImageView、ImageButton 2、imageView.setXXX(); 看下ImageView的设置图片方法: 1 ImageView imageView = new...总结此方法的缺点: 1、该方法无法缩放原图,若原图宽高不一致,则显示效果不佳,无法正常显示出较长边的部分内容 2、圆形图片的效果有一定的损耗,效果不佳 适用于对图片精美度要求不高的需求使用 自定义View...第三方类库学习笔记:CustomShapeImageView 自定义形状的ImageView

    1.9K80

    播放视频时如何在视频帧上添加水印

    有同学可能会说了,我直接用TextureView渲染视频画面,然后在TextureView上盖一层ImageView可以吗? 好像显示效果上没有什么问题,但是仔细分析还是不能满足要求?...ImageView无法实现截图的功能 3.ImageView盖在TextureView,会拦截TextureView的事件,造成播放器交互方面的问题。...线程),绘制的工作直接通过OpenGL在绘制线程进行,不会阻塞主线程,绘制的结果输出到SurfaceView所提供的Surface上,这使得GLSurfaceView也拥有了OpenGlES所提供的图形处理能力...3.支持用户自定义渲染器(Render),通过setRenderer设置一个自定义的Renderer。 4.让渲染器在独立的GLThread线程里运作,和UI线程分离。...6.GPU加速:GLSurfaceView的效率是SurfaceView的30倍以上,SurfaceView使用画布进行绘制,GLSurfaceView利用GPU加速提高了绘制效率 7.View的绘制onDraw

    3.1K00

    群组头像拼接

    截屏2021-01-08 下午2.07.18.png 自定义 View 方式实现 思路 要将多个人头像拼成一个,最初的设想是自定义 View,在 onDraw 里自己将多个 Bitmap 绘制上去。...而所有小图的圆心都在红色圆上,比如蓝色小圆,圆心在最外面大圆的角度是第一张图所在 270° 加 360°/5(图片数目)*2(自己顺序),也是相对于红色圆的角度。...自定义 Glide ModuleLoader 方式 实现自定义 ModuleLoader 参考文档,这种方式使用起来更优雅,更简洁。...现在的思路是再搞一张和原来的大圆一模一样的原图,然后将第一张和最后一张以同样的位置在第二个画布上绘制,将两者做个效果,让第一张图被压的那一角跑到最后一张上面去,然后再将这张画布的图片覆盖到原来的上面。...使用 SRC_ATOP 模式,最后一张图先绘作为 DST(黄色),然后绘制第一张图作为 SRC(蓝色),这样第一张图的一角就盖在了最后一张图上面。 ?

    1.4K10

    软件测试|超好用超简单的Python GUI库——tkinter(十四)

    前言 我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。...Canvas画布控件 Canvas 控件具有两个功能,首先它可以用来绘制各种图形,比如弧形、线条、椭圆形、多边形和矩形等,其次 Canvas 控件还可以用来展示图片(包括位图),我们将这些绘制在画布控件上的图形...通过 Canvas 控件创建一个简单的图形编辑器,让用户可以达到自定义图形的目的,就像使用画笔在画布上绘画一样,可以绘制各式各样的形状,从而有更好的人机交互体验。...Canvas 画布上绘制的图形)被选中时的背景色 selectborderwidth 指定当画布对象被选中时的边框宽度(选中边框) selectforeground 指定当画布对象被选中时的前景色 state...,绘制的图像如下: 图片 总结 本文主要介绍了tkinter的画布控件canvas的基本属性,包括绘制简单的线条,后续我们将使用Canvas控件绘制更多图形。

    91210

    软件测试|超好用超简单的Python GUI库——tkinter(十五)

    前言上一篇文章我们介绍了tkinter的Canvas画布控件,并且使用画布控件绘制了线条,本篇文章我们将介绍使用Canvas绘制更多图形。...在绘制这些图形时相关函数的可选参数与上述表格也存在略微差异,下面以绘制扇形的 create_arc() 函数为例做简单的介绍:属性方法activedash当画布对象状态为 "active" 的时候,绘制虚线...,只要你的坐标正确就可以# 绘制一个多边形,首先定义一系列的多边形上的坐标点poly_points=[(0,280),(140,200),(140,240),(270,240),(270,320),(140,320...((i+1)*30,30,bitmap=bitmaps[i])#并在画布上添加文本# 参数说明,前两个参数(x0,y0)参照点,指定文字字符串的左上角坐标# anchor 指定了文本的对于参照点的相对位置...tkinter画布控件绘制多种图形的方法,还包括展示文字内容的方法,后续我们将介绍tkinter的菜单控件使用。

    63210

    从0开始学自定义View -1

    初识View 在安卓中所有的样式都可以说是一个视图,TextView,Button,ImageView...这些官方已经给出的view已经无法满足我们的日常生活所需了,这个时候,我们就可以自定义View...event.getRawY(); 这里只是讲解了一些View的独有关于坐标的方法,因为在平常自定义的时候了解这些方法就已经可以对View进行操作了,比如说拖拽,拉伸,收缩等。...onDraw绘制View 这个方法就厉害了,所有的绘制工作都是里面的canvas去完成,canvas翻译过来是帆布的意思,对我们来说就是画布,画布有了,还差画笔,有笔有布有多彩墨水才能画出大好河山嘛,这里先介绍画笔...Paint 1:初始画笔 ----- Paint的使用 canvas.drawCircle(100, 100, 50, paint) 这是一个要绘制圆形图片的代码,两个100分别是XY轴坐标,50是半径...结果是使用此画笔绘制绘制 src 将与使用默认画笔绘制绘制 dst 相同(至少从几何角度来说是这样的)。 ?

    92730

    【Android】Android对于Activity的运用以及ViewGroup和 用户界面组件在项目中的运用

    Activity 确保无论系统从哪个任务启动活动,都只会创建一个活动实例并将其添加到新任务堆栈的顶部,也就是说,该实例启动的其他活动将自动在另一个任务中运行。...:一个牵强的比喻:我们可以分别称这三类:画家、画布和用画笔画的东西;艺术家用画笔(LayoutInfector.infalte)绘制一个图案,然后在画布上绘制(addView)!...视图是用户在屏幕上绘制时可以与之交互的对象。ViewGroup是用于存储其他View(和ViewGroup)对象的布局容器!...每个ViewGroup都是用于组织子视图的不可见容器。其子视图可以是在UI上绘制区域的输入控件或小部件。...这也是我们最常用的方法!此外,我们很少使用View和ViewGroup直接编写布局,更经常使用它们的子类控件或容器来构建布局!

    69020

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

    简介 定义:画布,是一种绘制时的规则 是安卓平台2D图形绘制的基础 作用:规定绘制内容时的规则 & 内容 记住:绘制内容是根据画布的规定绘制在屏幕上的 理解为:画布只是绘制时的规则,但内容实际上是绘制在屏幕上的...Canvas的本质 请务必记住: 绘制内容是根据画布(Canvas)的规定绘制在屏幕上的 画布(Canvas)只是绘制时的规则,但内容实际上是绘制在屏幕上的 为了更好地说明绘制内容的本质和Canvas,...总结 绘制内容是根据画布的规定绘制在屏幕上的 内容实际上是绘制在屏幕上; 画布,即Canvas,只是规定了绘制内容时的规则; 内容的位置由坐标决定,而坐标是相对于画布而言的 注:关于对画布的操作(缩放...:Path类的最全面详解 - 自定义View应用系列 3.3 关闭硬件加速 在Android4.0的设备上,在打开硬件加速的情况下,使用自定义View可能会出现问题 具体问题可以看这里。...绘制位图(drawBitmap) 作用:将已有的图片转换为位图(Bitmap),最后再绘制到Canvas上 位图,即平时我们使用的图片资源 获取Bitmap对象的方式 要绘制Bitmap,就要先获取一个

    2.4K10
    领券