Как я могу масштабировать холст так, чтобы мое приложение занимало весь экран? - PullRequest
0 голосов
/ 12 января 2019

Я разработал игру, которая отлично масштабируется и помещается на экране моего мобильного телефона. Однако на эмуляторе и других устройствах, которые я тестировал на нем, он может занимать только 20-50% экрана, потому что эти экраны были больше. Как я могу увеличить холст, специфичный для каждого устройства?

Я попытался определить ширину и высоту страницы и изменить положение прямоугольников, текста и т. Д. В зависимости от масштаба, в котором размер моего экрана делится на размер нового экрана, чтобы определить, насколько он больше. однако было бы не принимать десятичное / двойное значение.

Я часами изучал эту проблему и ничего не нашел.

Код графической нити / холста показан ниже:

  public void run() {
        while (isRunning){
            if (!holder.getSurface().isValid()){
                continue;
            }
            Canvas canvas = holder.lockCanvas();
            canvas.drawARGB(255,255,255,255);

            Paint paint = new Paint();
            paint.setTextSize(32);

            paint.setColor(Color.BLACK);
            canvas.drawText( "Next Block",525,80,paint);

            paint.setColor(NextBlock);
            canvas.drawRect(525 , 100 ,675, 250,paint);

            paint.setColor(Color.BLACK);
            canvas.drawText("Held Block",525,380,paint);

            paint.setColor(HeldBlock);
            canvas.drawRect(525,400,675,550,paint);

            paint.setColor(Color.BLACK);
            paint.setTextSize(52);
            canvas.drawText("Score",525,700,paint);
            paint.setTextSize(82);
            canvas.drawText(String.valueOf(score),525,800,paint);
            paint.setTextSize(32);

            for (int x = 0; x < 3; x++){
                for (int y= 0; y < 5; y++){
                    paint.setColor(BlocksGrid[x][y]);
                    canvas.drawRect((squareSize * x) + (gap * x) + startX, (squareSize * y) + (gap * y) + startY,(squareSize * x) + (gap * x) + startX + squareSize,(squareSize * y) + (gap * y) + startY + squareSize,paint);
                }
                paint.setColor(Color.GREEN);
                if (height[x] < 0){
                    paint.setColor(Color.RED);
                }
                canvas.drawRect((squareSize * x) + (gap * x) + startX, 870,(squareSize * x) + (gap * x) + startX + squareSize,945,paint);
            }

            holder.unlockCanvasAndPost(canvas);
        }
    }

Я думаю, что этого должно быть достаточно, однако, если вам понадобится больше кода, пожалуйста, спросите. Спасибо за помощь, поскольку я часами пытался решить эту проблему до окончательного завершения программы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...