2015-12-16 8 views
5

Realizzo giochi per Android e utilizzo SurfaceView.(Android) Come ottengo SmartPhone ScreenWidth e Height?

Voglio sapere SmartPhone schermata Inf (altezza, larghezza, ect ..)

ho Uesd questo codice, ma .. Non è corretto valore della visualizzazione larghezza e l'altezza,

E 'sempre stampato "0" di Red Color

Cosa mi manca?

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

risposta

1

È possibile ottenere l'altezza e la larghezza del display utilizzando il seguente codice.

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

Questo codice è stato sconsigliato da alcuni anni –

4

si può ottenere utilizzando questo codice:

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

Opere su tutte le versioni API, e quindi richiede alcun controllo API. Se si è in vista, potrebbe essere necessario per ottenere il contesto:

((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

invece di collegare a una domanda che è esattamente la stessa, vota per chiuderla come duplicata –

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