Привет, у меня есть , реализованный круговой индикатор выполнения, и он отлично работает. Теперь проблема в том, чтобы мне нужно было создать полупрозрачный индикатор прогресса.Как создать полосу пропускания с круговым циклом
0
A
ответ
0
Это может быть реализовано путем отсечения холста, содержащего изображение под углом (путем рисования дуги).
И закрепите это изображение, рисуя дугу.
Вот как вы можете это сделать.
//Convert the progress in range of 0 to 100 to angle in range of 0 180. Easy math.
float angle = (progress * 180)/100;
mClippingPath.reset();
//Define a rectangle containing the image
RectF oval = new RectF(mPivotX, mPivotY, mPivotX + mBitmap.getWidth(), mPivotY + mBitmap.getHeight());
//Move the current position to center of rect
mClippingPath.moveTo(oval.centerX(), oval.centerY());
//Draw an arc from center to given angle
mClippingPath.addArc(oval, 180, angle);
//Draw a line from end of arc to center
mClippingPath.lineTo(oval.centerX(), oval.centerY());
как только вы получите путь, вы можете использовать clipPath function
подрезать полотно в этом пути.
canvas.clipPath(mClippingPath);
Посмотрите на Semi Circle Progress Bar для более легкой и полезной информации.
Обратите внимание, что функция clipPath не работает, если аппаратное ускорение включено. Вы можете отключить аппаратное ускорение только для этого вида.
//Turn off hardware accleration
semiCircleProgressBarView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Как и когда прогресс изменения вы можете установить ProgressBar с помощью вызова функции,
semiCircleProgressBarView.setClipping(progress);