2012-04-16 13 views
28

मैं एक ऐप विकसित कर रहा हूं जिसमें मुझे अपने ऐप को हर डिवाइस के लिए फिट करना है - टैबलेट और एंड्रॉइड मोबाइल दोनों के लिए। अब मैं रनटाइम पर डिवाइस की ऊंचाई और चौड़ाई प्राप्त करना चाहता हूं और इसे अपने कोड में कार्यान्वित करना चाहता हूं ताकि मेरा ऐप लैंडस्केप और पोर्ट्रेट दोनों के लिए काम करे।रनटाइम पर डिवाइस की ऊंचाई और चौड़ाई कैसे प्राप्त करें?

मेरे एक्सएमएल फ़ाइल है:

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

मेरे जावा फ़ाइल है:

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-pixels-as-integer-values ​​इसे जांचें .. – RobinHood

+1

इससे आपकी मदद मिलेगी। [लिंक] [1] [1]: http: // stackoverflow।कॉम/प्रश्न/1016896/एंड्रॉइड-कैसे-टू-स्क्रीन-आयाम – Noundla

+3

आपको जवाब देने वाले – stinepike

उत्तर

10

अपनी गतिविधि का onCreate में आप

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

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

करते हैं और बाद में करने के लिए इन चर का उपयोग कर सकते हैं एक्सेस डिवाइस की ऊंचाई और चौड़ाई

+0

स्वीकार करना चाहिए, फिर मुझे इसे कोड में कैसे उपयोग करना चाहिए ?? – user1271118

+3

अगर मैं यहां फ्रैंक हो सकता हूं, तो उस सवाल का कोई मतलब नहीं है। आप मूल्य चाहते थे। आप इसके लिए क्या उपयोग करना चाहते हैं? – josephus

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

इस तरह आप स्क्रीन का आकार प्राप्त कर सकते हैं।

चूंकि इस एपीआई को नए एसडीके संस्करणों में चित्रित किया गया है, तो आप इसका उपयोग कर सकते हैं।

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

डिस्प्ले मिल गया है और GetHeight बहिष्कृत हैं। – emrahgunduz

+2

getWidth() और getHeight() को एपीआई स्तर 13 में बहिष्कृत किया गया है। इसके बजाय Display.getSize() का उपयोग करें, 'डिस्प्ले डिस्प्ले = getWindowManager()। GetDefaultDisplay(); प्वाइंट आकार = नया प्वाइंट(); यदि (Build.VERSION.SDK_INT> = Build.VERSION_CODES.JELLY_BEAN_MR1) { display.getSize (आकार); int चौड़ाई = size.x; int ऊंचाई = size.y; } ' लौटाए गए मान पिक्सेल में हैं। – luckylukein

22

एक गतिविधि गुंजाइश में कार्य करें:

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

यह है कि कैसे आप उपलब्ध स्क्रीन आयाम मिलता है। यह आपको कच्चे पिक्सेल आकार नहीं बल्कि आपकी खिड़की/गतिविधि की उपलब्ध जगह मिलेगा।

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

इसके अलावा आप लैंडस्केप और पोर्ट्रेट दोनों के लिए अलग-अलग लेआउट एक्सएमएल फाइलें भी ले सकते हैं। अपने एक्सएमएल को पोर्ट/रेज/पोर्ट में पोर्ट्रेट के लिए रखें। परिदृश्य के लिए लेआउट res/लेआउट-भूमि में रखा जा सकता है। आप पढ़ना चाहिए कैसे एंड्रॉयड हैंडल resources

2

आप वर्ग प्रदर्शन मेट्रिक्स का उपयोग कर सभी प्रदर्शन से संबंधित जानकारी प्राप्त कर सकते http://developer.android.com/reference/android/util/DisplayMetrics.html

आप

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

की आवश्यकता होगी करने के बाद यह सभी आवश्यक जानकारी उपस्थित रहेंगे आपके मेट्रिक्स ऑब्जेक्ट में।

अन्य विकल्प बाकी यहाँ कि पहले से ही किया था हर कोई के रूप में, कॉल करने के लिए

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

मैं आपको बता कैसे स्क्रीन आयाम प्राप्त करने के लिए नहीं जा रहा हूँ है। मैं आपको एंड्रॉइड डेवलपर देव गाइड से link पर इंगित कर रहा हूं, जो आपको विभिन्न स्क्रीन आकारों के उपकरणों के लिए डिज़ाइन और विकसित करने के बारे में सिखाता है।

पढ़ने के बाद, वापस आएं और हमें दोबारा बताएं कि आप अभी भी स्क्रीन की चौड़ाई और ऊंचाई प्राप्त करना चाहते हैं।

संबंधित मुद्दे