рисовать фон (шахматная доска) Java Android - PullRequest
2 голосов
/ 14 августа 2011

Я довольно новичок в Java и Android, но я ищу хороший учебник, который будет на правильном пути. Я хочу написать функцию, которая рисует / перерисовывает черный на белом шаблон шахматной доски на фоне текущего представления моего приложения. Я не хочу использовать фактическое изображение, так как я хочу иметь возможность перерисовывать фон при изменении размера событий, и т. Д. и я хочу динамически изменять размер квадратов ..

Спасибо за любую помощь

Ответы [ 4 ]

8 голосов
/ 14 августа 2011

Наиболее эффективный способ сделать это - иметь растровое изображение, содержащее шаблон шахматной доски (например, квадраты 2x2), и использовать BitmapShader с режимом плитки REPEAT:

BitmapShader shader = new BitmapShader(bitmapTemplate, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
Paint paint = new Paint();
paint.setShader(shader);

// in your draw method

canvas.drawRect(x, y, width, height, paint);
4 голосов
/ 17 августа 2013

Я требовал этого и хотел, чтобы он был немного более гибким, чем предоставление собственных растровых ресурсов.Так что вот опция на лету.

Вызовите этот метод в ваших методах onCreate () или конструктора и сохраните рисование.Затем просто используйте краску во время операций заполнения в onDraw ().

private Paint createCheckerBoard(int pixelSize)
{
    Bitmap bitmap = Bitmap.createBitmap(pixelSize * 2, pixelSize * 2, Bitmap.Config.ARGB_8888);

    Paint fill = new Paint(Paint.ANTI_ALIAS_FLAG);
    fill.setStyle(Paint.Style.FILL);
    fill.setColor(0x22000000);

    Canvas canvas = new Canvas(bitmap);
    Rect rect = new Rect(0, 0, pixelSize, pixelSize);
    canvas.drawRect(rect, fill);
    rect.offset(pixelSize, pixelSize);
    canvas.drawRect(rect, fill);

    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setShader(new BitmapShader(bitmap, BitmapShader.TileMode.REPEAT, BitmapShader.TileMode.REPEAT));
    return paint;
}
1 голос
/ 23 июля 2018

Я создал пользовательский Drawable, который может рисовать фоновую шахматную доску, смотрите это репозиторий github - CheckerboardDrawable .

Вы можете использовать его так:*

и его можно настраивать:

CheckerboardDrawable drawable = new CheckerboardDrawable.Builder()
        .colorOdd(Color.LTGRAY)
        .colorEven(Color.DKGRAY)
        .size(20)
        .build();
yourView.setBackgroundDrawable(drawable);

вывод будет:

screen shot

Надеюсь, что это поможет.

0 голосов
/ 14 августа 2011

загрузить 2 изображения: черно-белое

создайте шахматную доску с двумерным массивом [8] [8] из класса, который будет содержать размер для рисования и размер

создать 2d петлю

for (i < 8)
 for (j < 8)
  draw with canvas (chessboard[i][j].drawable) 

ключевых слов для вас в Google: 2D массивы, рисование холстом

...