由屏幕模式(肖像或风景)改变的绘图

问题描述:

我从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); 
      } 

     } 




    } 
} 
+0

我认为游戏应该在Lanscape模式下制作以获得更好的外观。所以,您可以将其更改为横向模式。 –

+0

我不同意,是的一些游戏被锁定在风景中。但是如果你可以在两个方向上玩你的游戏,这是一个功能。技术上可行的是,“更好的外观”可以在两者中得到证实。至少考虑支持工作/时间/努力的轮换。不要按照“游戏必须景观”的反射盲目。一般来说,支持两个方向总是比一个更好。因为用户可以选择他喜欢的更多,毕竟导致更多的快乐用户。而且快乐的用户可以更多地使用您的应用或从您那里购买其他应用。 – 2011-08-14 08:32:26

+0

是的,因为@suri说你只能进入横向模式。你也可以使用纵向模式但是如果你愿意的话,你必须在图形上做很多改变,因为你必须根据两种模式设置所有的版面大小。 –

感谢球员,我会针对游戏只为landascaping模式。虽然我同意alextsc,但在这种情况下看起来像Android平台不会在纵向模式下准确重绘。 我不能发布图像,因为我是新手张贴在这里,但运行此代码,你可以检查异常,似乎与方法drawRect有关。