回答
在繪製文件夾 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. Android位圖裁剪橢圓形
- 3. android橢圓形狀對話框
- 4. WPF橢圓黑色背景
- 5. 矩形/橢圓程序
- 6. 安卓:橢圓形不妙
- 7. 橢圓形的線索
- 8. CSS定義形狀橢圓
- 9. OpenGL圓形繪圖變橢圓
- 10. OpenGL繪製橢圓而不是圓形
- 11. 沿着圓形的Qt動畫橢圓
- 12. Pyqtgraph:如何繪製橢圓或圓形
- 13. CSS或jQuery/JavaScript橢圓形/圓形方形進度條
- 14. 橢圓vs圓
- 15. 如何使用Android矢量圖形繪製半橢圓形狀
- 16. 在Android上獲得弧形或橢圓形點數
- 17. Android - 展開橢圓化TextView
- 18. Android Map v2繪圖橢圓
- 19. Android中的橢圓漸變
- 20. 橢圓漸變的Android
- 21. Android中的OpenglES橢圓
- 22. 如何在點擊後切換橢圓形背景顏色?
- 23. InkCanvas表面可以是圓形/橢圓形狀嗎?
- 24. css border-radius圓形變爲橢圓形,位置:絕對
- 25. 爲什麼matplotlib將我的圓形繪製爲橢圓形?
- 26. 橢圓默認填充顏色
- 27. 在運行時改變橢圓顏色
- 28. 橢圓描邊背景顏色
- 29. 將文本繪製成橢圓形
- 30. Java插入橢圓形圖像
ü要實現ü如右圖所示的圖像? –
Hi @ZahanSafallwa是的,這是我想要達到的 –
以上使用'LayerDrawable'有兩層:一個是正常的藍色橢圓形,第二個是綠色的橢圓形包裹'ClipDrawable',但老實說爲什麼要做到這一點如果你可以創建一個自定義的'Drawable'類,那麼你可以繪製任何你想要的東西? – pskink