问题标签 [android-canvas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 在 Android 中平滑滚动画布
我是安卓新手。
我正在视图的 OnDraw(Canvas canvas) 方法内的 Canvas 上绘制位图、线条和形状。我正在寻求有关如何实现平滑滚动以响应用户拖动的帮助。我已经搜索但没有找到任何教程来帮助我。
Canvas 的参考似乎是说,如果 Canvas 是从 Bitmap(例如称为 bmpBuffer)构造的,那么在 Canvas 上绘制的任何内容也会在 bmpBuffer 上绘制。是否可以使用 bmpBuffer 来实现滚动......也许将它复制回 Canvas 一次移动几个像素?但是如果我使用 Canvas.drawBitmap 将 bmpBuffer 绘制回移动了几个像素的 Canvas,bmpBuffer 不会被破坏吗?因此,也许我应该将 bmpBuffer 复制到 bmpBuffer2 然后将 bmpBuffer2 绘制回画布。
一种更直接的方法是将线条、形状等直接绘制到缓冲区位图中,然后将该缓冲区(带有移位)绘制到画布上,但据我所知,有各种方法:drawLine()、drawShape()等等不可用于绘制到位图......只能绘制到画布上。
我可以有 2 个画布吗?其中一个将从缓冲区位图构造并仅用于绘制线条、形状等,然后将缓冲区位图绘制到另一个画布上以在视图中显示?
我应该欢迎任何建议!
此处(以及其他网站上)类似问题的答案是指“blitting”。我理解这个概念,但在 Android 文档中找不到任何关于“blit”或“bitblt”的信息。Canvas.drawBitmap 和 Bitmap.Copy Android 的等价物吗?
android - Android:如何检测滚动何时结束
我正在使用 GestureDetector.SimpleOnGestureListener 的 onScroll 方法在画布上滚动大位图。当滚动结束时,我想重新绘制位图,以防用户想要进一步滚动......离开位图的边缘,但我看不到如何检测滚动何时结束(用户抬起手指从屏幕上)。
e2.getAction() 似乎总是返回值 2 所以这没有帮助。e2.getPressure 似乎返回相当恒定的值(大约 0.25),直到最后一次 onScroll 调用,此时压力似乎下降到大约 0.13。我想我可以检测到压力的降低,但这远非万无一失。
必须有更好的方法:有人可以帮忙吗?
android - 画布上的图像到 JPEG 文件
我正在画布上绘制 2D 图像。
我想将画布上显示的图像保存为 JPEG 文件,我该怎么做?
android - Android View.onDraw() 总是有一个干净的画布
我正在尝试绘制动画。为此,我扩展了 View 并覆盖了 onDraw() 方法。我期望的是,每次调用 onDraw() 时,画布都会处于我留下的状态,我可以选择清除它或只绘制它的一部分(这就是我使用 SurfaceView 时的工作方式) 但每次画布回来时都已经清除了。有没有办法我不能清除它?或者也许将之前的状态保存到一个位图中,这样我就可以绘制那个位图然后在它上面绘制?
java - Android Canvas 中的复合操作
我刚开始进行 Android 开发,我来自 JavaScript/HTML 世界,所以我目前正在研究 Android SDK 的可能性。
HTML 5 画布支持复合操作(参见此处)。
这在 Android Canvas 中可行吗?我扫描了 Canvas 类的 API,但找不到任何有用的东西。我至少需要复合操作“source-in”或(如果不可能的话)“source-atop”。
android - 在 Android 中以一定角度(例如倒置)绘制文本
我正在尝试在 Android 中构建自定义时钟视图。见图片http://twitpic.com/1devk7
到目前为止,为了绘制时间和小时标记,我一直在使用 Canvas.rotate 方法来获得所需的效果。但是,请注意,由于绘制角度的原因,很难解释时钟下半部分的数字(例如 6 还是 9?)。
使用 drawText 时,是否可以以 45/90/180 度绘制文本,以便在我的 onDraw 方法完成后所有文本都显示为直立?
android - Android 绘画/画布问题;绘制平滑曲线
在 Android 中,当我用手指在触摸屏上绘图时,如何获得平滑的曲线而不是圆点或圆?我正在使用以下代码-
android - Android Canvas.drawText
我有一个视图,我正在使用 onDraw(Canvas canvas) 方法中的 Canvas 对象进行绘制。我的代码是:
问题是文本没有通过背景显示,我做错了什么?如果我删除 canvas.drawPaint(paint) 和 paint.setColor(android.R.color.black) 你可以在屏幕上看到文字.....
android - 测量要在 Canvas 上绘制的文本宽度(Android)
是否有一种方法可以根据用于绘制它的 Paint 使用 drawText() 方法返回要在 Android 画布上绘制的文本的宽度(以像素为单位)?
android - lockCanvas 是什么意思(详解)
我已经开始在 Android 中绘制图形了。那里有很多示例应用程序,但我经常看到的一件事是 lockCanvas。有人可以更详细地解释一下,因为我真的不明白,而且我认为理解未来的编程很重要?
一个例子:
这就是我现在所拥有的。我应该如何解释这个正确的?同步有什么作用?为什么将画布对象分配给 getHolder 和 lockCanvas 很重要?
这部分也令人困惑:
为什么这是必要的?我真的需要更详细的解释。:)