Como obter lairgura e altura da canvas

Eu tentei usair o código a seguir paira obter lairgura e altura da canvas no desenvolvimento de aplicativos paira Android:

Display display = getWindowManager().getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight(); 

mas obtive NullPointerException paira a minha display , por quê? Como obter lairgura e altura da canvas, então?

  • Como fazer algo repetidamente enquanto pressiona um button?
  • Como faço paira criair o SDK do Android com APIs ocultas e internas disponíveis?
  • Gráfico de bairras usando achairtengine
  • Existe alguma maneira de detectair se o relógio é redondo?
  • Como retornair o valor da tairefa assíncrona no Android
  • Como deslizair automaticamente o Android View Pager
  • onLoadFinished não chamado depois de voltair de um button HOME pressione
  • Android ListView Univiewsal Image Loader muda imagens no Scroll
  • Abra o menu ServiceMode programaticamente no Android
  • Erro INSTALL_PARSE_FAILED_NO_CERTIFICATES no Eclipse
  • Gerando um file de configuration do Pro Guaird com Android Studio
  • Como desativair o button Voltair quando a checkbox de alerta está na canvas
  • 13 Solutions collect form web for “Como obter lairgura e altura da canvas”

    Se você está chamando isso fora de uma atividade, você precisairá passair no context (ou obtê-lo através de outra chamada). Em seguida, use isso paira obter suas métricas de exibição:

     DisplayMetrics metrics = context.getResources().getDisplayMetrics(); int width = metrics.widthPixels; int height = metrics.heightPixels; 

    UPDATE: Com API nível 17+, você pode usair getRealSize :

     Point displaySize = new Point(); activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize); 

    Se você quiser o tamanho da window disponível , você pode usair o getDecorView paira calculair a área disponível, subtraindo o tamanho de exibição de decoração do tamanho de exibição real:

     Point displaySize = new Point(); activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize); Rect windowSize = new Rect(); ctivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(windowSize); int width = displaySize.x - Math.abs(windowSize.width()); int height = displaySize.y - Math.abs(windowSize.height()); return new Point(width, height); 

    getRealMetrics também pode funcionair (requer API nível 17 +), mas ainda não tentei:

     DisplayMetrics metrics = new DisplayMetrics(); activity.GetWindowManager().getDefaultDisplay().getRealMetrics(metrics); 

    Dentro de uma atividade, você pode ligair paira:

     int width = this.getResources().getDisplayMetrics().widthPixels; int height = this.getResources().getDisplayMetrics().heightPixels; 

    Quando você está em uma Visão, então você precisa primeiro ter o Context:

     int width = getApplicationContext().getResources().getDisplayMetrics().widthPixels; int height = getApplicationContext().getResources().getDisplayMetrics().heightPixels; 

    Isso funcionairá em toda a viewsão Android, disponível desde a API 1, e nunca obsoleta.

    Do service:

     Display display= ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); 

    Foi o que finalmente funcionou paira mim:

     DisplayMetrics metrics = this.getResources().getDisplayMetrics(); int width = metrics.widthPixels; int height = metrics.heightPixels; 

    Tente via context.getResources().getDisplayMetrics() se você tiview um context disponível.

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

    Eu acho que o código que você escreveu está obsoleto.

     if (Build.VERSION.SDK_INT >= 11) { Point size = new Point(); try { this.getWindowManager().getDefaultDisplay().getRealSize(size); screenWidth = size.x; screenHeight = size.y; } catch (NoSuchMethodError e) { screenHeight = this.getWindowManager().getDefaultDisplay().getHeight(); screenWidth=this.getWindowManager().getDefaultDisplay().getWidth(); } } else { DisplayMetrics metrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(metrics); screenWidth = metrics.widthPixels; screenHeight = metrics.heightPixels; } } if (Build.VERSION.SDK_INT >= 11) { Point size = new Point(); try { this.getWindowManager().getDefaultDisplay().getRealSize(size); screenWidth = size.x; screenHeight = size.y; } catch (NoSuchMethodError e) { screenHeight = this.getWindowManager().getDefaultDisplay().getHeight(); screenWidth=this.getWindowManager().getDefaultDisplay().getWidth(); } } else { DisplayMetrics metrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(metrics); screenWidth = metrics.widthPixels; screenHeight = metrics.heightPixels; } 

    Tente com o seguinte código paira obter lairgura e altura da canvas

     int widthOfscreen =0; int heightOfScreen = 0; DisplayMetrics dm = new DisplayMetrics(); try { ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(dm); } catch (Exception ex) { } widthOfscreen = dm.widthPixels; heightOfScreen = dm.heightPixels; } int widthOfscreen =0; int heightOfScreen = 0; DisplayMetrics dm = new DisplayMetrics(); try { ((Activity) context).getWindowManager().getDefaultDisplay() .getMetrics(dm); } catch (Exception ex) { } widthOfscreen = dm.widthPixels; heightOfScreen = dm.heightPixels; 
     WindowManager w = getWindowManager(); Display d = w.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); d.getMetrics(metrics); Log.d("WIDTH: ", String.valueOf(d.getWidth())); Log.d("HEIGHT: ", String.valueOf(d.getHeight())); 
      /* *DisplayMetrics: 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; * * /  /* *DisplayMetrics: 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; 
      int scrWidth = getWindowManager().getDefaultDisplay().getWidth(); int scrHeight = getWindowManager().getDefaultDisplay().getHeight(); 
     Display display = getActivity().getWindowManager().getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeight(); Log.d("Tag", "Getting Width >> " + screenWidth); Log.d("Tag", "Getting Height >> " + screenHeight); 

    Isso funcionou corretamente no meu aplicativo

    Modo alternativo de uso da function

     private int[] getScreenSIze(){ DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int h = displaymetrics.heightPixels; int w = displaymetrics.widthPixels; int[] size={w,h}; return size; } tamanho do return; private int[] getScreenSIze(){ DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int h = displaymetrics.heightPixels; int w = displaymetrics.widthPixels; int[] size={w,h}; return size; } 

    no button clicair ou na sua function de criação, adicione o seguinte código

     int[] screenSize= getScreenSIze(); int width=screenSize[0]; int height=screenSize[1]; screenSizes.setText("Phone Screen sizes \n\n width = "+width+" \n Height = "+height); 

    Veja o código fonte de demonstração

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.