2013-05-31 50 views
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中的錯誤?

回答

1

爲了解決這個問題,我最終編寫了代碼,在我需要時重新創建Drawables。無論如何,這是需要改變所有的角落半徑,縮小/增加陰影反折的數量等。

相關問題