在缩放GLES20RecordingCanvas上绘制的路径具有质量,就好像它在位图中未缩放,然后向上缩放.
相比之下,如果我Canvas使用支持位图创建,然后对Canvas对象应用相同的缩放转换,我会得到更优越的位图.
这里使用Path.addCircle和绘制两个圆圈Canvas.scale.使用缩放绘制上圆,使用后退位图GLES20RecordingCanvas使用缩放简单绘制下圆Canvas.
一些代码:
public class TestPathRenderer extends View {
...
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
int measuredWidth = getMeasuredWidth();
int measuredHeight = getMeasuredHeight();
float distortedWidth = getDistortedWidth();
float distortedHeight = getDistortedHeight();
path.reset();
path.addCircle(distortedWidth/2f, distortedHeight/2f, Math.min(distortedWidth/2f, distortedHeight/2f), Path.Direction.CW);
bitmap = assembleNewBitmap(measuredWidth, measuredHeight);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
switch (renderMode) …Run Code Online (Sandbox Code Playgroud) 我知道我应该测量孩子onMeasure()并将其布局onLayout().问题是我应该在这些方法中添加/回收视图,以便我可以一起测量所有孩子,看看它们是如何相互定位的(即网格,列表或其他)?
我的第一种方法是在添加/回收的观点onLayout(),但是从这一点来说,因为他们不会被添加到适配器视图但我不能衡量我的孩子们getChildCount()回报0的onMeasure().如果没有孩子已经布置,我无法测量AdapterView本身,因为它真的取决于他们的相互位置,对吗?
当动态添加/删除子项时,我对AdapterView中的android布局过程感到困惑.
android android-custom-view android-layout android-adapterview
我的问题是,在应用于Skia画布(使用concat方法)的平滑缩放期间,文本似乎在"spurts"中缩放,非均匀.这个问题在具有FreeType 2后端的Android平台上尤为明显.
我相信这是一般文本缩放在Skia中的工作方式 - 首先将文本大小应用于字体引擎,然后提取字形位图并使用"余数"矩阵对其进行转换以获得所需的最终大小.但不知何故,最终剩余的缩放未被应用,这导致在文本大小的整数值之间的过渡期间的这种喷射.纯Java/Android画布的相同之处似乎无可挑剔(文本可以顺利缩放).
我的问题是如何解决这种行为?也许有一些构建配置标志我可以调整,也许SkPaint运行时标志?
Skia修订版是m59.