У меня есть просмотрщик из 4 страниц, каждая страница просмотра содержит повторный просмотр.
Recyclerview содержит список из 20-30 элементов, в каждом элементе у меня есть imageView, чья функциональность заключается в загрузке файла и замене его холстом растровым изображением, показывающим процент загрузки в циклическом процессе
.
Я загружаю файл и показываю прогресс с помощью canvas и обновляю изображение.
Ниже приведен код
radiusDifference - 7 для планшета и 5 для мобильных экранов.
private void circularImageBar(ImageView iv2, int progess, int radiusDifference) {
System.out.println("sowload percent-" + progess);
Bitmap b = null;
Canvas canvas = null;
Paint paint = null;
if (b == null) {
b = Bitmap.createBitmap(iv2.getWidth(), iv2.getHeight(), Bitmap.Config.ARGB_8888);
canvas = new Canvas(b);
paint = new Paint();
}
paint.setColor(Color.DKGRAY);
paint.setStrokeWidth(iv2.getWidth() / 10);
paint.setStyle(Paint.Style.STROKE);
paint.setAntiAlias(true);
canvas.drawCircle(iv2.getWidth() / 2, iv2.getHeight() / 2,
(iv2.getWidth() / 2) - radiusDifference, paint);
int tintColor = Color.parseColor("#F81004");
paint.setColor(tintColor);
paint.setStrokeWidth(iv2.getWidth() / 10);
paint.setAntiAlias(true);
final RectF oval = new RectF();
paint.setStyle(Paint.Style.STROKE);
oval.set(radiusDifference, radiusDifference, iv2.getWidth() - radiusDifference,
iv2.getHeight() - radiusDifference);
canvas.drawArc(oval, 270, ((progess * 360) / 100), false, paint);
iv2.setImageBitmap(b);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
iv2.setForegroundGravity(View.TEXT_ALIGNMENT_CENTER);
}
iv2.requestLayout();
}
}
Загрузка выполняется и даже создается растровое изображение, но оно не отображается в пользовательском интерфейсе.