2015-12-16 1 views
5

Я делаю игру для Android и использую SurfaceView.(Android) Как я могу получить экранную ширину и высоту смартфона?

Я хочу знать SmartPhone экрана Info (высота, ширина, т.д ..)

Я уезда этот код, но .. Это не правильное значение отображения ширины и высоты,

Это всегда печатается «0» от красного цвета

Что я пропущу?

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);