0

我正在将游戏从 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 );
            }

        }




    }
} 
4

1 回答 1

0

Thanks guys, I'll be targeting the game just for landascaping mode. Althought I agree with alextsc but in this case looks like Android platform doesn't redraw accurately in portrait mode. I can't to publish an image because I'm newbie posting here, but running this code you can check the anomaly and seems be related with the method drawRect.

于 2011-08-15T18:28:01.033 回答