2
我已經實現了捏放大ViewGroup的子視圖有背景可繪製。在onScaleEnd後,我重新繪製了新尺度的子視圖,使它們更加清晰。但是,在較小比例的重新繪製之後,圓角半徑太大,導致矩形形狀出現錯誤。我的代碼可以用於更改我的Kindle Fire HD(基於4.0.3)正常工作的所有形狀的邊角半徑,但是我的Galaxy Nexus(4.2.2)手機沒有任何操作。setCornerRadius不適用於Android 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中的錯誤?