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

  • So gewähren Sie mit FLAG_GRANT_READ_URI_PERMISSION einen temporären Zugriff auf den benutzerdefinierten Anbieter
  • Warum braucht Intent.createChooser () einen BroadcastReceiver und wie man implementiert?
  • Wie kann ich den Anrufweiterleitungsstatus im Android-Througn-Code abrufen?
  • Wie passiere ich Hyperlink zu Gmail in Intent ACTION_SEND?
  • Android: Erkennung einer anderen Anwendung hat begonnen, Audio zu spielen
  • Töte Aktivität, wenn es um den Vordergrund geht
  • Machen Sie die "up" -Taste verhalten sich wie die "Zurück" -Taste auf Android
  • Öffnen Sie Android App, indem Sie eine SMS senden?
  • 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.