我已经实现了捏来放大一个 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 中的错误吗?