7

Я новичок в android. Я пытаюсь нарисовать это изображение (статистика матча) enter image description here и заполнить изображение цветом с 10% до 100%. Я попытался это много, и это изображение enter image description hereИспользование холста и растрового изображения в Android, как получить это изображение?

это код

public class DrawView extends View { 
Paint paint = new Paint(); 

public DrawView(Context context) { 
    super(context); 
} 

@Override 
public void onDraw(Canvas canvas) { 
    paint.setColor(Color.BLACK); 
    paint.setStrokeWidth(3); 
    canvas.drawRect(30, 30, 100, 100, paint); 
    paint.setStrokeWidth(0); 
    paint.setColor(Color.GRAY); 
    canvas.drawRect(33, 60, 97, 97, paint); 
    paint.setColor(Color.WHITE); 
    canvas.drawRect(33, 33, 97, 60, paint); 

} 

Любое предложение будет очень полезно для меня. Спасибо заранее.

+0

http://stackoverflow.com/questions/4918079/android-drawing-a-canvas-to-an-imageview –

+0

ли вы назвали 'Invalidate)' функции (после нажатия кнопки мнение? –

+0

нет, как я его называю? –

ответ

11

Я бы подготовил два изображения - полностью заполненный и не заполненный (только удар). Имея это, загрузить их в виде двух Bitmap объектов, а затем сделать так:

float fillProgress = 0.1f; // let's say image is 10% filled 

canvas.drawBitmap(onlyStroke, 0f, 0f, null); // draw just stroke first 

canvas.save(); 
canvas.clipRect(
    0f,          // left 
    getHeight() - fillProgress * getHeight(), // top 
    getWidth(),        // right 
    getHeight()        // bottom 
); 
canvas.drawBitmap(filled, 0f, 0f, null);  // region of filled image specified by clipRect will now be drawn on top of onlyStroke image 
canvas.restore(); 

Используя два изображения, изложенные и наполнили например, ниже.

enter image description here enter image description here

Код выше выполняет следующие действия:

  1. раздаточный контур.
  2. применить клип (растение).
  3. нарисовать заполненную форму с нанесенной культурой.
  4. удалить клип, изображение по вашему желанию.

enter image description here

Применение различных размеров клипа, вы можете получить% заливки вам требуется. например

enter image description here

+2

Я думаю, что некоторые примеры, чтобы показать, как объединились два изображения, помогут. Это хороший способ сделать это, но я думаю, что визуальные эффекты объяснят это лучше. (+1) – Doomsknight

+1

@ Doomsknight лучше? –

+0

Как разместить текст в центре, показывая количество% заполненного. –