Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 相对于屏幕大小绘制图像_Android_Position_Screen Size - Fatal编程技术网

Android 相对于屏幕大小绘制图像

Android 相对于屏幕大小绘制图像,android,position,screen-size,Android,Position,Screen Size,我正在制作一个游戏,我希望玩家从屏幕中间的“X”位置开始,然后从“Y”位置开始,玩家的底部比屏幕底部高出5个像素。我尝试使用显示和显示度量来获得屏幕大小,并设置相对于屏幕大小的X和Y位置,但它似乎不起作用,图像根本无法在屏幕上显示。我只是得到一个空白屏幕。但是,如果我给出恒定的坐标(例如100,50),它是有效的。这就是我现在努力实现这一目标的方式: x=(displayMetrics.widthPixels/2); y=displayMetrics.heightPixels-(高度+5) 这是

我正在制作一个游戏,我希望玩家从屏幕中间的“X”位置开始,然后从“Y”位置开始,玩家的底部比屏幕底部高出5个像素。我尝试使用显示和显示度量来获得屏幕大小,并设置相对于屏幕大小的X和Y位置,但它似乎不起作用,图像根本无法在屏幕上显示。我只是得到一个空白屏幕。但是,如果我给出恒定的坐标(例如100,50),它是有效的。这就是我现在努力实现这一目标的方式:

x=(displayMetrics.widthPixels/2);
y=displayMetrics.heightPixels-(高度+5)

这是自定义视图将其绘制到屏幕的方式:

canvas.drawBitmap(player.getImage(),player.getX(),player.getY(),null)

自定义视图类-

public class GameGraphics extends SurfaceView implements Runnable {

private SurfaceHolder surfaceHolder;
private Thread gameGraphics;
private GameCore gameCore;
private Player player;

public GameGraphics(Context context, GameCore gameCore) {
    super(context);
    this.gameCore = gameCore;
    this.player = gameCore.getPlayer();
    surfaceHolder = getHolder();
    gameGraphics = new Thread(this);
    gameGraphics.start();
}

@Override
public void run() {     
    while(gameCore.isRunning() == true){
        if(!surfaceHolder.getSurface().isValid())
            continue;
        Canvas canvas = surfaceHolder.lockCanvas();
        canvas.drawBitmap(player.getImage(), player.getX(), player.getY(), null);
        surfaceHolder.unlockCanvasAndPost(canvas);
    }
}

}
球员级别-

public Player(GameCore gameCore, Context context) {
    this.gameCore = gameCore;
    this.context = context;
    displayMetrics = new DisplayMetrics();
    gameCore.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    /* INITIALIZE HEIGHT AND WIDTH VARIABLES */
    height = 72;
    width = 72;
    x = (displayMetrics.widthPixels / 2); 
    y = displayMetrics.heightPixels - (height + 5);
    xChange = 0;
    /* INITIALIZE IMAGE */
    image = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher);
}

***我正在使用默认的ic_启动器来测试****

您能发布更多自定义视图类的代码吗?