28

Ich entwickle eine App, in der ich unsere App für jedes Gerät passend machen muss - sowohl für Tablet- als auch für Android-Handys. Jetzt möchte ich die Gerätehöhe und -breite zur Laufzeit abrufen und sie in meinem Code implementieren, sodass meine App für Quer- und Hochformat funktioniert.Wie erhält man Gerätehöhe und -breite zur Laufzeit?

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 

    } 


    } 
+0

http://stackoverflow.com/questions/2902640/android-get-the-screen-resolution-pixel-as-integer-values ​​überprüfen Sie dies .. – RobinHood

+1

das wird Ihnen helfen. [link] [1] [1]: http: // Stapelüberlauf.com/questions/1016896/android-how-to-get-screen-dimensionen – Noundla

+3

yoou sollte akzeptieren die anser – stinepike

Antwort

10

Im onCreate Ihrer Aktivität können Sie

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

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

tun und später diese Variablen verwenden, um Zugangsgerät Höhe und Breite

+0

Dann wie soll ich ich es in code ?? – user1271118

+3

Wenn ich hier offen sein kann, macht diese Frage keinen Sinn. Du wolltest die Werte. Wofür willst du es verwenden? – josephus

63
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 entzogen ist, können Sie diese verwenden.

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

Die Anzeigen getWidth und getHeight sind veraltet. – emrahgunduz

+2

getWidth() und getHeight() sind in API Level 13 veraltet. Verwenden Sie stattdessen Display.getSize() wie folgt: 'Display display = getWindowManager(). GetDefaultDisplay(); Punktgröße = neuer Punkt(); if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.JELLY_BEAN_MR1) { display.getSize (Größe); int width = Größe.x; int Höhe = Größe.y; } ' Die zurückgegebenen Werte sind in Pixel. – luckylukein

22

In einem Aktivitätsumfang tun:

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

dies ist, wie Sie die verfügbaren Bildschirmgrößen. Dadurch erhalten Sie nicht die reine Pixelgröße, sondern den verfügbaren Platz Ihres Fensters/Ihrer Aktivität.

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

Sie können auch verschiedene Layout-XML-Dateien für Querformat und Hochformat haben. Setzen Sie Ihre XML für Hochformat in res/Layout-Port. Layout für Landschaft kann in res/Layout-Land gelegt werden. Sie sollten vorhanden sein, wird die erforderlichen Informationen Nach all

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

erfordern würden Sie

http://developer.android.com/reference/android/util/DisplayMetrics.html Metrics Display-Informationen über die Klasse bezogenen Anzeige alle erhalten können nachlesen, wie android Griffe resources

2

Sie die in Ihrem Metrikobjekt.

Die andere Option ist zu nennen

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

Ich werde Ihnen nicht sagen, wie die Bildschirmabmessungen zu erhalten, da hier jeder andere, was bereits getan hat. Ich weise Sie auf eine link aus dem Android-Entwickler Dev-Guide, der Ihnen beibringen sollte, wie für Geräte unterschiedlicher Bildschirmgrößen zu entwerfen und zu entwickeln.

Nach dem Lesen, kommen Sie zurück und sagen Sie uns noch einmal, dass Sie immer noch die Breite und Höhe des Bildschirms erhalten möchten.

Verwandte Themen