Я портирую игру с 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);
}
}
}
}
Я думаю, что игра должна быть выполнена в режиме Lanscape для лучшего внешнего вида. Таким образом, вы можете изменить его в альбомном режиме. –
Я не согласен, да, некоторые игры заперты в ландшафте. Но если вы можете играть в свою игру в обеих ориентациях, это особенность. И технически возможно, «лучший взгляд» может быть заархивирован в обоих. По крайней мере, подумайте о поддержке вращения против работы/времени /. Не следует, чтобы «игры должны быть пейзажными» рефлекторными слепыми. В общем, поддержка двух ориентаций всегда лучше, чем одна. Потому что у пользователя есть выбор, который ему больше нравится, в результате чего все больше счастливых пользователей. И счастливые пользователи больше взаимодействуют с вашим приложением или покупают у вас другие приложения. –
Да как @suri сказал, что вы должны идти только в режиме ландшафта. Вы можете пойти и в портретном режиме. Но вы должны сделать много изменений в графике, если вы поедете для него, потому что вы должны установить все макеты в соответствии с обоими режимами. –