java - (Android) 如何获取智能手机的屏幕宽度和高度?

标签 java android surfaceview

<分区>

我正在为 Android 制作游戏并使用 SurfaceView。

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

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

它总是被红色打印成“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();
             }
         }
     }

最佳答案

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

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

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

((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);‌​

关于java - (Android) 如何获取智能手机的屏幕宽度和高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34306953/

相关文章:

java.net.UnknownHostException : Unable to resolve host "s3-ap-northeast-1.amazonaws.com": No address associated with hostname

Java 访问桥 C# : Only MouseClicked event firing?

设置为 480*854 时,Android 模拟器以 320*480 打开 View

android - 使用自定义相机的 SurfaceView 放大和缩小功能

android - 如何获得具有有效 Surface 的 SurfaceHolder(EGL.eglCreateWindowSurface 需要)?

Java:缺少返回语句错误

java - Spring HttpSecurity 覆盖响应头

android - 在 Android 之前停止之前播放的音频后播放音轨

安卓模拟器权限

android - glReadPixels 在 WebRTC Android SurfaceViewRenderer 中不起作用