2015-12-16 59 views
5

我正在为Android做游戏并使用SurfaceView。(Android)我如何获得智能手机屏幕宽度和高度?

我想知道智能手机的屏幕信息(高度,宽度,等..)

我uesd这个代码,但..这是不是显示宽度和高度的正确值,

它总是打印“0”by Red Color

我想念什么?

public class MainActivity extends Activity { 
private int width; 
private int height; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    width = metrics.widthPixels; 
    height = metrics.heightPixels; 

    setContentView(new GameView(this)); 
} 

public class Painter extends Thread 
public void run(){ 
    Canvas canvas = null; 
    long start, end; 
    int sleep; 
    while(true) { 
     if (runnable) { 
      start = System.currentTimeMillis(); 

      try { 
       canvas = holder.lockCanvas(null); 
       paint.setColor(Color.RED); 
       paint.setTextSize(200); 

       synchronized (holder) { 
        canvas.drawText(Integer.toString(main.getHeight()), 600, 800, paint); 
        canvas.drawText(Integer.toString(main.getWidth()), 300, 400, paint); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } finally { 
       holder.unlockCanvasAndPost(canvas); 
      } 

      end = System.currentTimeMillis(); 

      sleep = 1000/FPS - (int) (end - start); 
      try { 
       Thread.sleep(sleep > 0 ? sleep : 0); 
      } // Try 
      catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

回答

1

您可以使用以下代码获得显示高度和宽度。

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 
+1

此代码已经被废弃了好几年 –

4

您可以使用此代码得到它:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 

适用于所有版本的API,因此不需要API检查。 如果你是在一个视图中,您可能需要获取上下文:

((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);‌​ 
1
/* 
     * A structure describing general information about a display, such as its size, density, and font scaling. 
     * */ 
     DisplayMetrics metrics = getResources().getDisplayMetrics(); 

     int DeviceTotalWidth = metrics.widthPixels; 
     int DeviceTotalHeight = metrics.heightPixels; 

How to Get Device Height and Width at Runtime?

+3

而不是链接到一个完全相同的问题,投票结束它作为重复 –

0
DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
int width=dm.widthPixels; 
int height=dm.heightPixels; 
int dens=dm.densityDpi; 
double wi=(double)width/(double)dens; 
double hi=(double)height/(double)dens; 
double x = Math.pow(wi,2); 
double y = Math.pow(hi,2); 
double screenInches = Math.sqrt(x+y);