2011-06-03 18 views
4

嗨 我想創建一個形狀繪製並用漸變色與白色的行程 在此處填寫是我的代碼如何添加行程ShapeDrawable

ShapeDrawable greenShape = new ShapeDrawable(new RectShape()); 
    Shader shader1 = new LinearGradient(0, 0, 0, 50, new int[] { 
      0xFFBAF706, 0xFF4CD52F }, null, Shader.TileMode.CLAMP); 
    greenShape.getPaint().setShader(shader1); 
    greenShape.getPaint().setStrokeWidth(3); 
    greenShape.getPaint().setColor(Color.WHITE); 
    greenShape.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);` 

問題是矩形出現帶有漸變填充,但無卒中

+0

我不知道如何在代碼中做到這一點。這是你可以在XML中做什麼? – CaseyB 2011-06-03 20:10:33

+0

用xml很簡單,但在我的情況下,我想用java代碼來做 – JustMe 2011-06-03 20:13:06

回答

10

ShapeDrawable不允許您輕鬆地在它周圍畫一筆。 如果你真的想要那麼this將是一個很好的地方看看。

OR

你可以使用一個GradientDrawable

GradientDrawable gd = new GradientDrawable(); 
gd.setColor(Color.RED); 
gd.setCornerRadius(10); 
gd.setStroke(2, Color.WHITE); 

(PS:這是作爲在同一頁面評論)

+0

如何使它成爲OvalShape?意思是一個實心的圓,另一種顏色的筆畫? – 2017-08-10 07:51:43

0
<stroke 
     android:width="2dp" 
     android:color="#808080" /> 

嘗試它,它肯定會工作

0

將樣式更改爲greenShape.getPaint()。setStyle(Paint.Style.STROKE) 和

greenShape.setShaderFactory(new ShapeDrawable.ShaderFactory() { 
     @Override 
     public Shader resize(int width, int height) { 
      return new LinearGradient(0, 0, 0, 0, Color.WHITE, Color.WHITE, Shader.TileMode.REPEAT);