我已经实现了缩放以缩放其子视图具有背景绘制的ViewGroup。在onScaleEnd上,我以新的比例重绘子视图,因此它们更清晰。然而,在以较小比例重新绘制之后,圆角半径太大,使得矩形形状具有错误的外观。我的代码可用于更改我的Kindle Fire HD(基于4.0.3)上正常工作的所有形状的转角半径,但在我的Galaxy Nexus(4.2.2)手机上没有任何作用。
注意:我不会改变drawable,因为我确实希望所有基于该资源的drawable在我这样做时改变它们的外观。
我看过:change corner radius of drawable programmatically 和其他一些帖子,但没有任何暗示设备的不同行为。
以下是代码:
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中的错误吗?
答案 0 :(得分:1)
为了解决这个问题,我终于编写了代码,以便在需要时重新创建Drawables。无论如何,这都需要改变所有的角半径,收缩/增加阴影的数量等等。