草庐IT

canvas2d

全部标签

android - 为什么 Google 在 Gmail 应用对话 ListView 中使用 Canvas?

我一直在使用HierarchyViewer检查Android中的Gmail应用程序,发现了一些有趣的东西,即电子邮件列表中的每个项目看起来都像CanvasView-我期待的是带有子组件的RelativeLayout之类的东西:虽然我最初是出于性能原因这样做的-每个项目一个CanvasView比每个项目的多个View要好得多,尤其是在看起来滚动非常流畅的长列表中。这听起来正确吗?Google是否在其官方文档中的任何地方推荐了这种方法?这是其他人应该关注的性能方法吗? 最佳答案 是的,View越少,UI的效率就越高。如果您有一个视觉上复

android - 将高程阴影绘制到 Canvas

我使用下面的代码在位图/Canvas上绘制View。Bitmapbitmap=Bitmap.createBitmap(viewGroup.getWidth(),viewGroup.getHeight(),Bitmap.Config.ARGB_8888);viewGroup.draw(newCanvas(bitmap));效果很好,但有一个小问题:它不绘制高程阴影。我假设阴影不是在draw方法中绘制的。那么它们在哪里绘制以及如何将它们转移到我的Canvas上? 最佳答案 不,阴影是为比它低层的View绘制的。您正在使用不支持阴影的软件

android - 如何在 Android 中用颜色变化在 Canvas 上绘制渐变颜色?

我需要为我的Canvas背景绘制一种颜色并应用阴影/渐变,但每次调用onDraw时我都想潜在地更改颜色。如果没有在每次onDraw调用时都创建一个新对象,我在执行此操作时遇到了麻烦。有人有想法么?如果我使用drawPaint()并为我的绘画设置一个新的shader(),那么我已经创建了一个新的着色器对象,如果我创建了一个新的GradientDrawable(),我也有。我想避免GC。我想我可以重用一个GradientDrawable()对象并调用.setColor()方法,但这只会重置所有关联的渐变数据并将可绘制对象绘制为该纯色。有人吗? 最佳答案

android - 如何在特定的LinearLayout中添加Canvas?

我是android的新手,但不是java的新手。我一直在通过XML文件在android中设计UI,在该页面中我有3个线性布局,在我的顶部布局(第一个LinearLayout)中我保留了一些图像,在最后一个布局中我保留了一些按钮,现在我需要放置一个在我的中心布局中使用Canvas的圆(红色),我编写了一个单独的类来扩展View,在onDraw(Canvascanvas)中,我画了一个圆。packagecom.project.TargetTrackr3;importandroid.content.Context;importandroid.graphics.Canvas;importand

android - 在 Android 中使用 Canvas 和位图,如何获取此图像?

我是安卓新手。我正在尝试绘制此图像(匹配统计)并用10%到100%的颜色填充图像。我试了这么多,这是图像这是代码publicclassDrawViewextendsView{Paintpaint=newPaint();publicDrawView(Contextcontext){super(context);}@OverridepublicvoidonDraw(Canvascanvas){paint.setColor(Color.BLACK);paint.setStrokeWidth(3);canvas.drawRect(30,30,100,100,paint);paint.setSt

android - 为什么 canvas 和 onDraw 中的 view 大小不一样? (安卓)

我试过这个@OverrideprotectedvoidonDraw(Canvascanvas){Log.e("TEST","canvaswidth:"+canvas.getWidth()+"");Log.e("TEST","viewwidth:"+this.getWidth()+"");Log.e("TEST","canvasheight:"+canvas.getHeight()+"");Log.e("TEST","viewheight:"+this.getHeight()+"");super.onDraw(canvas);Log.e("TEST","canvaswidth:"+can

android - 缩放 Canvas 并保持居中

我想缩放画有位图的Canvas。我能够缩放Canvas,但绘制在其上的位图分别移动到左上角和右下角。@OverrideprotectedvoidonDraw(Canvascanvas){canvas.translate(mPosX,mPosY);canvas.scale(mScaleFactor,mScaleFactor);//drawbitmap}在过去的几天里,我尝试了许多不同的方法,从操纵平移坐标到轴心点以进行缩放。但对我没有任何作用。我很确定我的问题一定有一个简单的解决方案。提前致谢 最佳答案 正如您提到的,枢轴点是执行此操

android如何旋转 Canvas 矩形

我创建了一个特定大小的矩形,现在我想将它旋转45度,我使用了canvas.rotate、matrix,但没有用。在android中旋转Canvas的正确方法是什么?我很好奇Path.Direction.CW,它用于旋转吗?但我在Path()中没有看到任何旋转功能paint.setAntiAlias(true);paint.setStrokeWidth(2);paint.setColor(Color.BLUE);paint.setAlpha(75);Pathpath=newPath();path.addRect(166,748,314,890,Path.Direction.CW);can

android - 垂直翻转 Android Canvas

有没有简单的方法可以在Android中翻转Canvas?我似乎找不到任何允许我垂直翻转它的东西,以便y轴上的零是电话屏幕的底部而不是顶部。如果解决方案不是特别快也没关系,因为我没有对Canvas进行任何计算密集型操作。提前致谢。 最佳答案 尝试canvas.scale(1f,-1f,width/2f,height/2f)参见Canvas.scale文档。前两个参数是缩放量。 关于android-垂直翻转AndroidCanvas,我们在StackOverflow上找到一个类似的问题:

Android - Canvas.clipRect() - 删除现有剪辑

我有一个Canvas对象,在某些时候我设置了一个剪辑,这样我就可以在那个“窗口/部分”中绘图,而不用担心溢出到Canvas的其他部分。在我完成绘制到“窗口”后,我想删除那个剪辑区域,但我似乎做不到。没有删除剪辑功能,当我尝试在整个Canvas上应用新剪辑时,该剪辑未被应用-在应用新剪辑返回后立即调用canvas.getClipBounds()Rect与上一个剪辑。 最佳答案 在设置裁剪矩形之前使用canvas.save()然后使用canvas.restore()丢弃裁剪矩形。 关于And