我有一个小问题,如在这张照片中显示的那样,我无法恢复屏幕大小,因为我想要的,我有点失落... (我正在学习)无法取回屏幕大小android
http://imageshack.us/f/708/erreurtaillepong4.png/
http://imageshack.us/f/708/erreurtaillepong5.png/
我需要有屏幕的宽度和高度
请帮
编辑1
这里是我的代码问:
package com.salocincreations.pong;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
public class GameState {
//Largeur et hauteur de l'écran
int _screenWidth = TailleEcran.Measuredwidth;
int _screenHeight = TailleEcran.Measuredheight;
//La balle
final int _ballSize = 10;
int _ballX = _screenWidth/2; int _ballY = _screenHeight/2;
int _ballVelocityX = 2; int _ballVelocityY = 4;
//Les barres
final int _batLength = 75; final int _batHeight = 10;
int _topBatX = (_screenWidth/2) - (_batLength/2);
final int _topBatY = 10;
int _bottomBatX = (_screenWidth/2) - (_batLength/2);
final int _bottomBatY = _screenHeight - 20;
public GameState()
{
}
//The update method
public void update() {
_ballX += _ballVelocityX;
_ballY += _ballVelocityY;
//DEATH!
if(_ballY > _bottomBatY + 10 || _ballY < 0)
{_ballX = 100; _ballY = 100;}//Collisions with the goals
if(_ballX > _screenWidth || _ballX < 0)
_ballVelocityX *= -1; //Collisions with the sides
if(_ballX > _topBatX && _ballX < _topBatX+_batLength && _ballY - 16 < _topBatY)
_ballVelocityY *= -1; //Collisions with the bats
if(_ballX > _bottomBatX && _ballX < _bottomBatX+_batLength
&& _ballY + 16 > _bottomBatY)
_ballVelocityY *= -1;
}
public boolean surfaceTouched(float posX, float posY) {
_topBatX = (int) posX;
_bottomBatX = (int) posX;
return true;
}
//the draw method
public void draw(Canvas canvas, Paint paint) {
//Clear the screen
canvas.drawRGB(0, 0, 0);
//set the colour
paint.setARGB(200, 0, 200, 700);
//draw the ball
canvas.drawRect(new Rect(_ballX,_ballY,_ballX + _ballSize,_ballY + _ballSize),
paint);
//draw the bats
canvas.drawRect(new Rect(_topBatX, _topBatY, _topBatX + _batLength,
_topBatY + _batHeight), paint); //top bat
canvas.drawRect(new Rect(_bottomBatX, _bottomBatY, _bottomBatX + _batLength,
_bottomBatY + _batHeight), paint); //bottom bat
// Nous allons dessiner nos points par rapport à la résolution de l'écran
int iWidth = canvas.getWidth(); // Largeur
int iHeight = canvas.getHeight(); // Hauteur
// Affecter une couleur de manière aléatoire
paint.setARGB(255, 500, 500, 500);
// Définir l'épaisseur du segment
paint.setStrokeWidth (2);
// Puis dessiner nos points dans le cavenas
canvas.drawLine(0, iHeight/2, iWidth, iHeight/2, paint);
canvas.drawCircle(iWidth/2, iHeight/2, 50, paint);
}
}
和
public class TailleEcran extends Activity {
int Measuredwidth;
int Measuredheight;
Point size = new Point();
WindowManager w = getWindowManager();{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2){
w.getDefaultDisplay().getSize(size);
Measuredwidth = size.x;
Measuredheight = size.y;
}else{
Display d = w.getDefaultDisplay();
Measuredwidth = d.getWidth();
Measuredheight = d.getHeight();
}}}
在线路
int _screenWidth = TailleEcran.Measuredwidth;
int _screenHeight = TailleEcran.Measuredheight;
错误说:不能让一个静态参照非静态字段TailleEcran.Measuredwidth
和
不能使静态参考非静态字段TailleEcran.Measuredheight
EDIT 2
然后,anthropomo,我需要写?
public class GameState {
// declare variables above here without assignments
Display display = ((WindowManager)
context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
int pixHeight = metrics.heightPixels;
int pixWidth = metrics.widthPixels;
// dp numbers:
float density = context.getResources().getDisplayMetrics().density;
float dpHeight = pixHeight/density;
float dpWidth = pixWidth/density;
public GameState(Context context){
//all the rest of my class
}
}
见http://stackoverflow.com/questions/15366712/size-of-the-usable-screen/15367869#15367869了解视图大小的标准方法。 – 2013-03-13 16:17:32
而不是屏幕截图,您应该将相关代码部分剪切并粘贴到您的问题中。 – anthropomo 2013-03-13 16:22:00