Wie bekomme ich Gerätehöhe und Breite bei Runtime?

Ich entwickle eine App, in der ich unsere App für jedes Gerät passen muss – sowohl für Tablet- als auch für Android-Handys. Jetzt möchte ich die Gerätehöhe und -breite zur Laufzeit bekommen und es in meinem Code implementieren, damit meine App sowohl für die Landschaft als auch für das Portrait funktioniert.

Meine XML-Datei ist:

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

Meine Java-Datei ist:

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

  • Kann die OnPostExecute () - Methode in der AsyncTask-Klasse nicht überschreiben oder sie auslösen
  • "Fehler: kann nicht finden Symbol Variable xml" beim Versuch Google Analytics
  • Android SDK r20 - Windows 7 - Installiere Java JDK nicht gefunden
  • Android Base64 kodiert und decodiert die Nullen im Unit Test
  • ToByteArray () wird nicht für Facebook-Login gelöst
  • Wie kann ich eine Java App mit der Monkeyrunner API machen?
  • Kopiere das Verzeichnis von Assets in den Datenordner
  • Kann das Spring Framework in Android Anwendungen eingesetzt werden?
  • 6 Solutions collect form web for “Wie bekomme ich Gerätehöhe und Breite bei Runtime?”

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

    Auf diese Weise können Sie die Bildschirmgröße erhalten.

    Da diese API in den neuen SDK-Versionen vertreten ist, kannst du diese nutzen.

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

    In einem Aktivitätsbereich:

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

    Im onCreate deiner Aktivität kannst du tun

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

    Und später diese Variablen verwenden, um auf Gerätehöhe und -breite zuzugreifen

    So erhalten Sie die verfügbaren Bildschirmdimensionen. Dies wird Ihnen nicht die rohe Pixel Größe, sondern die verfügbaren Speicherplatz Ihres Fensters / Aktivität.

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

    Auch können Sie verschiedene Layout-XML-Dateien für Landschaft und Porträt haben. Setzen Sie Ihre xml für portrait in res / layout-port. Layout für Landschaft kann in res / Layout-Land gesetzt werden. Sie sollten lesen, wie Androide Ressourcen Ressourcen

    Sie können alle Display-bezogenen Informationen mit der Klasse Display Metrics http://developer.android.com/reference/android/util/DisplayMetrics.html erhalten

    Du würdest verlangen

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

    Danach werden alle benötigten Informationen in deinem Metrikobjekt vorhanden sein.

    Die andere Möglichkeit ist zu rufen

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

    Ich werde dir nicht sagen, wie man die Bildschirmdimensionen bekommt, wie es sonst noch jemand getan hat. Ich zeige Sie auf einen Link von der Android-Entwickler-Dev-Guide, die Ihnen beibringen, wie man Design und Entwicklung für Geräte mit verschiedenen Bildschirmgrößen.

    Nach dem Lesen, komm zurück und erzähl uns wieder, dass du immer noch die Breite und Höhe des Bildschirms bekommen willst.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.