我有一个小问题,如图所示,我无法恢复我想要的屏幕尺寸,我有点迷茫......(我正在学习)
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 进行静态引用
编辑 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
}
}