¿Cómo obtener la altura y el ancho del dispositivo en Runtime?

Estoy desarrollando una aplicación en la que tengo que hacer que nuestra aplicación se ajuste a todos los dispositivos, tanto para tablets como para móviles con Android. Ahora quiero obtener la altura y el ancho del dispositivo en tiempo de ejecución e implementarlo en mi código para que mi aplicación funcione tanto para el paisaje como para el retrato.

Mi archivo XML es:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="2" android:orientation="vertical"> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent" android:orientation="horizontal" android:layout_width="match_parent" android:layout_weight="1"> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent" android:orientation="vertical" android:layout_width="match_parent" android:layout_weight="1" android:weightSum="100"> <TextView android:id="@+id/letter1" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="60"></TextView> <TextView android:id="@+id/letter2" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="20"></TextView> <TextView android:id="@+id/letter3" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="20"></TextView> </LinearLayout> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="match_parent" android:gravity="center" android:orientation="horizontal" android:layout_width="match_parent" android:layout_weight="1"> <ImageView android:id="@+id/imag" android:gravity="center" android:scaleType = "fitCenter" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_gravity="center"> </ImageView> </LinearLayout> </LinearLayout> <LinearLayout android:layout_gravity="bottom" android:id="@+id/linearLayout2" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_width="match_parent"> <Button android:id="@+id/previous" android:layout_width="wrap_content" android:layout_weight="1" android:text="Previous" android:layout_height="wrap_content" ></Button> <Button android:id="@+id/practice" android:layout_width="wrap_content" android:layout_weight="1" android:text="Practice" android:layout_height="wrap_content" android:onClick="onClick"></Button> <Button android:id="@+id/home" android:layout_width="wrap_content" android:layout_weight="1" android:text="Home" android:layout_height="wrap_content"></Button> <Button android:id="@+id/spell" android:layout_width="wrap_content" android:layout_weight="1" android:text="Spell" android:layout_height="wrap_content" android:onClick="Content"></Button> <Button android:id="@+id/next" android:layout_width="wrap_content" android:layout_weight="1" android:text="Next" android:layout_height="wrap_content" android:onClick="Content"></Button> </LinearLayout> </LinearLayout> 

Mi archivo de Java es:

 package com.android; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Typeface; import android.media.MediaPlayer; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.android.SimpleGestureFilter.SimpleGestureListener; public class MySwara extends Activity implements SimpleGestureListener { private SimpleGestureFilter detector; private static int counter=-1; private String[] mBtn1 ={"C","D","E","F","G","H","IÄ","J","K","L","M","N","O","CA","CB"}; private TextView txtLetter; private ImageView imgLetter; private int[] imgArr={R.drawable.w1,R.drawable.w2,R.drawable.w3,R.drawable.w4,R.drawable.w5,R.drawable.w6,R.drawable.w7,R.drawable.w8,R.drawable.w9,R.drawable.w10,R.drawable.w11,R.drawable.w12, R.drawable.w13,R.drawable.w14,R.drawable.w15}; private TextView txtKannada; private String[] mBtn2 = {"CgÀ¸À","DªÉÄ","E°","F±À","GqÀ","Hl","IĶ","J¯É","Kr","LzÀÄ","M¯É","N¯É","OµÀzsÀ", "CAUÀr","CB"}; private String[] mBtn3 = {"ARASA","AME","ILI","ISA","UDA","UTA","RUSHI","ELE","EDI","AIDU","oLE","OLE","AUSHADA", "ANGADI","AHA"}; private TextView txtEnglish; private int[] mAudio = {R.raw.a,R.raw.b,R.raw.c,R.raw.d,R.raw.e,R.raw.f,R.raw.g,R.raw.h,R.raw.i,R.raw.j, R.raw.k,R.raw.l,R.raw.m,R.raw.n,R.raw.o}; protected MediaPlayer mp; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.content); detector = new SimpleGestureFilter(this,this); if(counter == -1) counter =getIntent().getExtras().getInt("POSITION"); Typeface tf = Typeface.createFromAsset(getBaseContext().getAssets(), "fonts/brhknd.ttf"); txtLetter = (TextView)findViewById(R.id.letter1); txtKannada = (TextView)findViewById(R.id.letter2); txtEnglish = (TextView)findViewById(R.id.letter3); imgLetter = (ImageView)findViewById(R.id.imag); txtLetter.setTypeface(tf); txtLetter.setText(mBtn1[counter]); //txtLetter.setTextSize(350); Bitmap bm = BitmapFactory.decodeResource(getResources(), imgArr[counter]); imgLetter.setImageBitmap(bm); txtKannada.setTypeface(tf); txtKannada.setText(mBtn2[counter]); //txtKannada.setTextSize(100); txtEnglish.setText(mBtn3[counter]); //txtEnglish.setTextSize(50); Button btnNext = (Button)findViewById(R.id.next); btnNext.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(counter<imgArr.length-1) counter++; changeContent(); } }); Button mPlay = (Button)findViewById(R.id.spell); mPlay.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mp = MediaPlayer.create(MySwara.this, mAudio[counter]); mp.start(); } }); Button btnPrvs = (Button)findViewById(R.id.previous); btnPrvs.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(counter>0) counter--; changeContent(); } }); Button btnPractice = (Button)findViewById(R.id.practice); btnPractice.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MySwara.this,DrawingActivity.class); startActivity(intent); } }); Button btnHome = (Button)findViewById(R.id.home); btnHome.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MySwara.this,mainClass.class); startActivity(intent); } }); } public void changeContent() { txtLetter.setText(mBtn1[counter]); txtKannada.setText(mBtn2[counter]); txtEnglish.setText(mBtn3[counter]); //imgLetter.setBackgroundResource(imgArr[counter]); Bitmap bm = BitmapFactory.decodeResource(getResources(), imgArr[counter]); imgLetter.setImageBitmap(bm); } @Override public boolean dispatchTouchEvent(MotionEvent me){ this.detector.onTouchEvent(me); return super.dispatchTouchEvent(me); } @Override public void onSwipe(int direction) { String str = ""; switch (direction) { case SimpleGestureFilter.SWIPE_RIGHT : str = "Swipe Right"; if(counter>0) counter--; changeContent(); break; case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left"; if(counter<imgArr.length-1) counter++; changeContent(); break; } } @Override public void onDoubleTap() { // TODO Auto-generated method stub } } 

 Display mDisplay = activity.getWindowManager().getDefaultDisplay(); final int width = mDisplay.getWidth(); final int height = mDisplay.getHeight(); 

De esta manera usted puede obtener el tamaño de la pantalla.

Dado que esta API es depricated en las nuevas versiones de SDK puede utilizar esto.

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

En un ámbito de actividad, haga lo siguiente:

 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int w = dm.widthPixels; // etc... 

En la onCreate de tu actividad puedes hacer

 mScreenWidth = getActivity().getWindowManager().getDefaultDisplay().getWidth(); mScreenHeight = getActivity().getWindowManager().getDefaultDisplay().getHeight(); 

Y posteriormente utilizar estas variables para acceder a la altura y el ancho del dispositivo

Así es como obtiene las dimensiones de pantalla disponibles. Esto le conseguirá no el tamaño crudo del pixel pero el espacio disponible de su ventana / actividad.

  Point outSize = new Point(); getWindowManager().getDefaultDisplay().getSize(outSize); 

También puede tener diferentes archivos xml de diseño tanto para el paisaje como para el retrato. Ponga su xml para el retrato en res / layout-port. Diseño para el paisaje se puede poner en res / layout-land. Usted debe leer cómo androide maneja los recursos

Puede obtener toda la información relacionada con la pantalla utilizando la clase Mostrar métricas http://developer.android.com/reference/android/util/DisplayMetrics.html

Necesitarías

 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); 

Después de esto, toda la información requerida estará presente en el objeto de métricas.

La otra opción es llamar

 getActivity().getWindowManager().getDefaultDisplay().getWidth() getActivity().getWindowManager().getDefaultDisplay().getHeight() 

No voy a decirle cómo obtener las dimensiones de la pantalla, como todo el mundo aquí ya lo hizo. Le estoy señalando a un enlace de la guía desarrollador android desarrollador, que debe enseñarle cómo diseñar y desarrollar para dispositivos de diferentes tamaños de pantalla.

Después de leer, vuelva y díganos otra vez que usted todavía desea conseguir el ancho y la altura de la pantalla.

  • Tiempo desplegable en Android
  • El archivo existe y el directorio IS, pero listFiles () devuelve null
  • Android: Cómo utilizar la lista de arrays de cadenas dentro de la fila de lista
  • ¿Qué es firebase y cómo usarlo en Android?
  • diferencia runable androide
  • Cómo hacer la reanudación de sesión SSL en Android
  • Mostrar texto dinámico en una vista de Android
  • Crear notificación de emisión diaria mediante Firebase Cloud Messaging
  • "Error al exportar la aplicación" en Eclipse 4.4.1 para Android con ADT 23.0.4
  • HttpURLConnection solicitud de ser golpeado dos veces en el servidor para descargar el archivo
  • No se puede implementar el módulo de backend de punto final de Cloud
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.