2010-10-16 76 views
2

我想創建一個漸變drawable來描述一些東西的比例。作爲一個通用的例子,假設你正在查看包含一組汽車的listview。背景可能是一個燃料衡量標準 - 我不希望平穩過渡。我想要一個非常緊湊的轉換,並且我希望能夠設置轉換髮生的位置。Android「高級」漸變 - 「拇指」位置?

這是我在盯着看,但我沒有走得很遠。

<?xml version="1.0" encoding="utf-8"?> 
<shape 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
    <gradient 
     android:startColor="#D2E3D3" 
     android:endColor="#E6E6E3" 
     android:angle="0" 
    /> 
    <corners android:radius="0dp" /> 
</shape> 

謝謝!

回答

10

好吧,這裏是你如何能做到這一點:

ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() { 
    @Override 
    public Shader resize(int width, int height) { 
     LinearGradient lg = new LinearGradient(0, 0, width, height, 
      new int[]{Color.GREEN, Color.GREEN, Color.WHITE, Color.WHITE}, 
      new float[]{0,0.5f,.55f,1}, Shader.TileMode.REPEAT); 
     return lg; 
    } 
}; 

PaintDrawable p=new PaintDrawable(); 
p.setShape(new RectShape()); 
p.setShaderFactory(sf); 

然後,只需設置爲您backroundDrawable