Android 相对于屏幕大小绘制图像
我正在制作一个游戏,我希望玩家从屏幕中间的“X”位置开始,然后从“Y”位置开始,玩家的底部比屏幕底部高出5个像素。我尝试使用显示和显示度量来获得屏幕大小,并设置相对于屏幕大小的X和Y位置,但它似乎不起作用,图像根本无法在屏幕上显示。我只是得到一个空白屏幕。但是,如果我给出恒定的坐标(例如100,50),它是有效的。这就是我现在努力实现这一目标的方式: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=(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_启动器来测试****您能发布更多自定义视图类的代码吗?