Может быть очень сложно нарисовать градиент, чем следовать по пути.
Поэтому я предлагаю вам использовать уже готовую библиотеку, чем сделать ее для вас.
Можно быть Sc-Gauges .
Имейте несколько полезных классов, которые вы можете использовать для своей цели.
Для первого включите библиотеку:
dependencies {
...
compile 'com.github.paroca72:sc-gauges:3.0.7'
}
После создания изображения или того, что вы хотите, с холстом, где рисуйте:
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
Теперь код:
// Dimensions
int padding = 24;
Rect drawArea = new Rect(padding, padding, 700 - padding, 500 - padding);
// Get the main layout
ImageView imageContainer = (ImageView) this.findViewById(R.id.image);
assert imageContainer != null;
// Create a bitmap and link a canvas
Bitmap bitmap = Bitmap.createBitmap(
drawArea.width() + padding * 2, drawArea.height() + padding * 2,
Bitmap.Config.ARGB_8888
);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.parseColor("#f5f5f5"));
// Create the path building a bezier curve from the left-top to the right-bottom angles of
// the drawing area.
Path path = new Path();
path.moveTo(drawArea.left, drawArea.top);
path.quadTo(drawArea.centerX(), drawArea.top, drawArea.centerX(), drawArea.centerY());
path.quadTo(drawArea.centerX(), drawArea.bottom, drawArea.right, drawArea.bottom);
// Feature
ScCopier copier = new ScCopier();
copier.setPath(path);
copier.setColors(Color.RED, Color.GREEN, Color.BLUE);
copier.setWidths(20);
copier.draw(canvas);
// Add the bitmap to the container
imageContainer.setImageBitmap(bitmap);
И вот результат:
Первая часть кода предназначена только для создания растрового изображения с рисованием.
Что вас интересует, так это вторая часть, где используется ScCopier.
Просто дайте путь, цвет и с.
Обратите внимание, что вы внутри вида, вы можете использовать onDraw
для рисования непосредственно на холсте вида.
Эта библиотека может использоваться для создания датчиков любого вида.
Если вы хотите взглянуть на этот сайт, ScComponents имеет несколько бесплатных и некачественных компонентов.