2012-04-16 2 views
-2

Привет, Я разрабатываю приложение, в котором алфавиты не подходят для каждого устройства. Для планшета HCL ME мой дизайн не подходит. Для samsung он работает. МОЯ файл XML является:Как подгонять мой дизайн ко всем устройствам?

<?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"> 
      <TextView android:id="@+id/letter1" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"></TextView> 
      <TextView android:id="@+id/letter2" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dip"></TextView> 
      <TextView android:id="@+id/letter3" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dip"></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> 

и мой файл Java является:

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 MyAcivity 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); 

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

Как я могу соответствовать всем устройствам. Может ли кто-нибудь помочь? Заранее спасибо.

ответ

0

Создайте xml для каждого устройства отдельно. следовать this


Второй способ:

создать родительский LinearLayout и передать его следующему методу

public static boolean isTabletPC(Context context) { 
    Display display = ((WindowManager) context 
      .getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    if (display.getWidth() >= 1200) { 
     isTabletPC = true; 
     return isTabletPC; 
    } else { 
     isTabletPC = false; 
     return isTabletPC; 
    } 
} 

public static void fixUiDeviceDependencies(
     Activity act, LinearLayout llParent) { 
    if (Utilities.isTabletPC(act)) { 
     Display display = ((WindowManager) act 
       .getSystemService(Context.WINDOW_SERVICE)) 
       .getDefaultDisplay(); 
     LayoutParams params = (LayoutParams) llParent 
       .getLayoutParams(); 
     params.width = display.getWidth()/2; 
     llParent.setLayoutParams(params); 
    } 

} 
+0

Но я хочу реализовать динамически. Потому что я хочу подгонять его для планшетов, а также для мобильных телефонов. Как мне изменить код? – user1271118

0

Есть несколько возможностей:

  1. использовать разные XML файлы для разных размеров экрана -> здесь http://developer.android.com/guide/practices/screens_support.html

  2. вы можете использовать scrollview ->http://developer.android.com/reference/android/widget/ScrollView.html

  3. или просто сделать макет подходит для самого маленького размера экрана вы хотите поддержать, а затем просто «немного» неиспользуемое пространство на больших экранах.

Это действительно зависит от того, что вам нужно. Вероятно, наиболее совместимым и передовым решением будет 1.

ЗАМЕЧАНИЕ, что КАЖДОЕ изменение на макете экрана должно быть дублировано для каждого XML-файла, следующего за этим маршрутом!

+0

ps, ​​поскольку вы новичок в SO, просто комментарий стороны ... как только вы приняли ответ, не забудьте проверить его как принятый. Таким образом, вы будете уделять повышенное внимание своим вопросам – user387184

Смежные вопросы