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

みんなありがとう、私は造園モードのためだけにゲームをターゲットにします. 私は alextsc に同意しますが、この場合、Android プラットフォームはポートレート モードで正確に再描画されないようです。ここに投稿するのは初心者なので画像を公開できませんが、このコードを実行すると異常を確認でき、drawRect メソッドに関連しているようです。

于 2011-08-15T18:28:01.033 に答える