2

我已经实现了捏来放大一个 ViewGroup,其子 View 具有背景可绘制对象。在 onScaleEnd 上,我以新的比例重绘子视图,使它们更加清晰。但是,在以较小的比例重新绘制后,圆角半径太大,使矩形形状看起来不正确。我有代码可用于更改在我的 Kindle Fire HD(基于 4.0.3)上正常工作的所有形状的角半径,但在我的 Galaxy Nexus(4.2.2)手机上没有任何作用。

注意:我不会改变drawable,因为我确实希望基于该资源的所有drawable在我这样做时改变它们的外观。

我看过:以编程方式更改可绘制对象的角半径 和其他几篇文章,但甚至没有暗示跨设备的不同行为。

这是代码:

    final LayerDrawable layerDrawable = (LayerDrawable) context.getResources().getDrawable(drawableId);
    final Drawable drawable = layerDrawable.findDrawableByLayerId(drawableLayerId);
    if (drawable instanceof GradientDrawable) {
        final float newRadius = nodeScale > SMALL_TREE_NODE_LAYOUT_THRESHOLD ? normalRadius : smallRadius;

        // this doesn't work
        ((GradientDrawable) drawable).setCornerRadius(newRadius);

        // this doesn't work either
        ((GradientDrawable) drawable).setCornerRadii(new float[] {newRadius, newRadius, newRadius, newRadius, newRadius, newRadius, newRadius, newRadius });
    }

这是 4.2.2 中的错误吗?

4

1 回答 1

1

为了解决这个问题,我终于编写了代码来在需要时重新创建可绘制对象。无论如何,这对于更改所有角半径、缩小/增加阴影矩形的数量等都是必需的。

于 2013-07-18T17:05:56.930 回答