回答
在繪製文件夾 shape.xml創建shape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient android:startColor="#0000FF" android:endColor="#00FF00"
android:angle="270"/>
</shape>
並將此shape.xml添加到您的視圖背景 –
好的答案,它將看起來完全如上圖所示,用android:shape =「ring」替代 android:shape =「oval」行。 因此,最終的XML將如下所示: - <?xml version =「1.0」encoding =「utf-8」?>
這可能來晚了,但我已經很難找到很好的答案,以便聽到我服食。
我使用自定義drawable繪製圓形,並使用由位置數組配置的LinearGradient着色器不具有漸變過渡。梯度線方向在LinearGradient構造函數中進行配置(這裏是對角線)。
public class MultiColorCircleDrawable extends Drawable {
private Paint paint;
private int[] colors;
public MultiColorOvalDrawable(int[] colors) {
this.colors = colors;
}
private void init() {
paint = new Paint();
paint.setShader(createShader());
}
private Shader createShader() {
int[] colorsArray = new int[colors.length * 2];
float[] positions = new float[colors.length * 2];
for (int i = 0; i < colors.length; i++) {
int y = i * 2;
int color = colors[i];
colorsArray[y] = color;
colorsArray[y+1] = color;
positions[y] = 1f/colors.length * i;
positions[y+1] = 1f/colors.length * (i+1);
}
Rect bounds = getBounds();
int width = bounds.right - bounds.left;
int height = bounds.bottom - bounds.top;
return new LinearGradient(0, 0, width, height, colorsArray, positions, Shader.TileMode.REPEAT);
}
@Override
public void draw(Canvas canvas) {
if (null == paint) {
init();
}
Rect bounds = getBounds();
int width = bounds.right - bounds.left;
int height = bounds.bottom - bounds.top;
canvas.drawCircle(width/2, height/2, (width/2) - strokeWidth, maskPaint);
}
@Override
public void setAlpha(int i) {
}
@Override
public void setColorFilter(ColorFilter colorFilter) {
}
@Override
public int getOpacity() {
return PixelFormat.OPAQUE;
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<gradient
android:centerX="-1"
android:type="sweep"
android:startColor="color1"
android:endColor="color2"
/>
</shape>
當給出答案時,最好給出[關於爲什麼你的答案的一些解釋](http://stackoverflow.com/help/how-to-answer)。 –
Audo它的作品,但是如果我想讓顏色垂直分割(左/右)而不是水平分割,我必須做些什麼? – murt
- 1. android textview與橢圓形
- 2. 獲取橢圓形視圖的顏色
- 3. CSS div橢圓形
- 4. 在矩形內創建橢圓/圓形
- 5. 彎曲線形成圓形和橢圓
- 6. Android位圖裁剪橢圓形
- 7. Android圈背景變成橢圓形
- 8. Android Action Bar橢圓形陰影
- 9. android橢圓形狀對話框
- 10. 在橢圓形中製作橢球體
- 11. WPF橢圓黑色背景
- 12. CSS定義形狀橢圓
- 13. 橢圓形背景漸變
- 14. 繪製矩形和橢圓
- 15. 矩形/橢圓程序
- 16. 橢圓的標準形式
- 17. 橢圓形的線索
- 18. CSS橢圓形從DIV
- 19. 轉換多邊形橢圓
- 20. 安卓:橢圓形不妙
- 21. 在橢圓形註釋
- 22. OpenGL圓形繪圖變橢圓
- 23. 用橢圓繪製圓形pygame
- 24. Pyqtgraph:如何繪製橢圓或圓形
- 25. 沿着圓形的Qt動畫橢圓
- 26. OpenGL繪製橢圓而不是圓形
- 27. 在Java中移動橢圓和橢圓形狀?
- 28. Android Canvas.drawCircle()錯誤。持續繪製橢圓而不是圓形
- 29. 變形圈到橢圓形在openscad
- 30. 如何檢查橢圓形是否觸及任何其他橢圓形VB
ü要實現ü如右圖所示的圖像? –
Hi @ZahanSafallwa是的,這是我想要達到的 –
以上使用'LayerDrawable'有兩層:一個是正常的藍色橢圓形,第二個是綠色的橢圓形包裹'ClipDrawable',但老實說爲什麼要做到這一點如果你可以創建一個自定義的'Drawable'類,那麼你可以繪製任何你想要的東西? – pskink