小编vga*_*nin的帖子

为什么在缩放的GLES20RecordingCanvas和简单的Canvas上绘制的路径具有不同的特性?

在缩放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)

android android-custom-view android-graphics

12
推荐指数
1
解决办法
155
查看次数

在自定义AdapterView中实现onMeasure()和onLayout()的正确方法

我知道我应该测量孩子onMeasure()并将其布局onLayout().问题是我应该在这些方法中添加/回收视图,以便我可以一起测量所有孩子,看看它们是如何相互定位的(即网格,列表或其他)?

我的第一种方法是在添加/回收的观点onLayout(),但是从这一点来说,因为他们不会被添加到适配器视图但我不能衡量我的孩子们getChildCount()回报0onMeasure().如果没有孩子已经布置,我无法测量AdapterView本身,因为它真的取决于他们的相互位置,对吗?

当动态添加/删除子项时,我对AdapterView中的android布局过程感到困惑.

android android-custom-view android-layout android-adapterview

8
推荐指数
1
解决办法
996
查看次数

Skia中的非均匀文本缩放(FreeType 2后端)

我的问题是,在应用于Skia画布(使用concat方法)的平滑缩放期间,文本似乎在"spurts"中缩放,非均匀.这个问题在具有FreeType 2后端的Android平台上尤为明显.

我相信这是一般文本缩放在Skia中的工作方式 - 首先将文本大小应用于字体引擎,然后提取字形位图并使用"余数"矩阵对其进行转换以获得所需的最终大小.但不知何故,最终剩余的缩放未被应用,这导致在文本大小的整数值之间的过渡期间的这种喷射.纯Java/Android画布的相同之处似乎无可挑剔(文本可以顺利缩放).

我的问题是如何解决这种行为?也许有一些构建配置标志我可以调整,也许SkPaint运行时标志?

Skia修订版是m59.

c++ android freetype2 skia

8
推荐指数
1
解决办法
199
查看次数