首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(安卓)如何获取SmartPhone ScreenWidth和Height?

(安卓)如何获取SmartPhone ScreenWidth和Height?
EN

Stack Overflow用户
提问于 2015-12-16 16:17:52
回答 4查看 153关注 0票数 5

我正在为安卓制作游戏,并使用SurfaceView。

我想知道SmartPhone屏幕信息(高度、宽度等)。

我用了这段代码,但是..显示宽度和高度值不正确,

它总是被红色打印成"0“

我错过了什么?

代码语言:javascript
复制
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();
             }
         }
     }
EN

回答 4

Stack Overflow用户

发布于 2015-12-16 16:32:34

您可以使用以下代码获取它:

代码语言:javascript
复制
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;

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

代码语言:javascript
复制
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);‌​
票数 4
EN

Stack Overflow用户

发布于 2015-12-16 16:27:34

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

代码语言:javascript
复制
 Display display = getWindowManager().getDefaultDisplay();
 Point size = new Point();
 display.getSize(size);
 int width = size.x;
 int height = size.y;
票数 1
EN

Stack Overflow用户

发布于 2015-12-16 16:35:56

代码语言:javascript
复制
 /*
        * 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?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34306953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档