いくつかの調査の後、どのビューの背景としても設定できるこのクラスPaintDrawableが見つかりました。驚くほどこのDrawableにShapeを設定できます。RoudRectShapeを使用すると、丸みを帯びているように見えます。最終コードは次のとおりです。
// mRatios is a View
ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() {
@Override
public Shader resize(int i, int i1) {
LinearGradient lg = new LinearGradient(0, 0, mRatios.getWidth(), 0,
barColorsArray,
barRatiosArray,
Shader.TileMode.REPEAT);
return lg;
}
};
PaintDrawable paintDrawable = new PaintDrawable();
// not sure how to calculate the values here, but it works with these constants in my case
paintDrawable.setShape(new RoundRectShape(new float[]{100,100,100,100,100,100,100,100}, null, null));
paintDrawable.setShaderFactory(sf);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
mRatios.setBackgroundDrawable(paintDrawable);
} else {
mRatios.setBackground(paintDrawable);
}