Рисование изменено в режиме экрана (портрет или пейзаж) - PullRequest
0 голосов
/ 14 августа 2011

Я портирую игру с JME на Android и обнаружил досадную проблему. Следующее действие должно нарисовать сетку, и фактически это делает. Но сетка выглядит нормально только в режиме ландшафтного дизайна. Когда вы кладете телефон вертикально (в портретном режиме), он выглядит странно сжатым. Основной код - это метод, используемый для рисования строки ячеек (getSquareRow) Заранее спасибо за любую помощь.

Вот код:

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class TraxActivity extends Activity {
    InternalView myView;
    private float shift, di;
    private float n, minim, redux, side;
    boolean first = true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        myView = new InternalView(this);
        setContentView(myView);
    }

    private class InternalView extends View{
        public InternalView(Context context){
            super(context);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            Paint paint = new Paint();

            n=5;
            di=12;
            int ancho = getWidth();
            int alto = getHeight();
            minim = Math.min(getWidth(), getHeight());
            redux = minim*9/10;
            shift = (getWidth() - redux)/2;
            side = redux/n;

            //background
            paint.setStyle(Paint.Style.FILL);
            paint.setColor(Color.BLUE);
            canvas.drawPaint(paint);

            //grid
            for(int j=0; j < n; j++){
                getSquareRow( canvas, j, paint);
            } 



        }




        public void getSquareRow(Canvas g, int row, Paint p){

            p.setColor(Color.BLACK);
            p.setStyle(Paint.Style.STROKE);
            p.setStrokeWidth(10);

            for(int i=0; i < n; i++){
                g.drawRect(shift+i*side, shift+row*side, side, side, p );
            }

        }




    }
} 

1 Ответ

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

Спасибо, ребята, я буду ориентироваться на игру только для режима ландшафта.Хотя я согласен с alextsc, но в этом случае платформа Android не перерисовывается точно в портретном режиме.Я не могу опубликовать изображение, потому что я здесь новичок, но, запустив этот код, вы можете проверить аномалию и, похоже, связаны с методом drawRect.

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