2012-03-20 27 views
3

Android搭載端末に複数の画面サイズの画像を拡大するアプリがあります。複数の画面サイズに合わせて画像のサイズを変更する

レイアウトはプログラムで作成されます(xmlは使用できません)。写真エディタに保存すると、イメージのサイズを定義します(例:60x60)。

タブレットでできるだけスケールアップされているようですが、もっと大きくなる可能性があります。 イメージのサイズを100x100に変更しようとしましたが、これはもう少しタブレット画面を満たしますが、今は小さなデバイスでそのイメージを縮小しません...非常に不満です。ここで

は私のコードです:

Android Manifest: enabling resizable attribute and supported screens 

     <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.anndconsulting.numbertouch" 
     android:versionCode="1" 
     android:versionName="1.0" 
     android:installLocation="auto" 
     android:resizeable="true" 
     > 
    <supports-screens 
     android:smallScreens="true" 
     android:normalScreens="true" 
     android:largeScreens="true" 
     android:anyDensity="true" 
     /> 

Game.Javaコード:複数の画面サイズと密度を持つ複数のデバイスでサポートされているイメージを持っている

//create a layout 
    ll = new LinearLayout(this); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    ll.setBackgroundResource(R.drawable.background); 
    ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.FILL_PARENT)); 

    //create another 5 linear layouts which will host 5 buttons horizontally 
    linearLayout1 = new LinearLayout(this); 
    linearLayout1.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout1.setGravity(Gravity.CENTER); 

    linearLayout2 = new LinearLayout(this); 
    linearLayout2.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout2.setGravity(Gravity.CENTER); 

    linearLayout3 = new LinearLayout(this); 
    linearLayout3.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout3.setGravity(Gravity.CENTER); 

    linearLayout4 = new LinearLayout(this); 
    linearLayout4.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout4.setGravity(Gravity.CENTER); 

    linearLayout5 = new LinearLayout(this); 
    linearLayout5.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout5.setGravity(Gravity.CENTER); 

    Then i create a 5x5 array of buttons (which I saved as 100x100) in the drawable  folder 

    for (int i = 0; i < 25; i++) { 
      buttonsa.add(createButton(i)); 
     } 
     Collections.shuffle(buttonsa); 

     //add first 5 buttons to first layout 
      for (int i=0;i<5;i++) { 
      linearLayout1.addView(buttonsa.get(i)); 


     } 
     //add remaining 5 to second layout 
     for (int i=5;i<10;i++){ 
      linearLayout2.addView(buttonsa.get(i)); 

     } 
     for (int i=10;i<15;i++){ 
      linearLayout3.addView(buttonsa.get(i)); 

     } 
     for (int i=15;i<20;i++){ 
      linearLayout4.addView(buttonsa.get(i)); 

     } 
     for (int i=20;i<25;i++){ 
      linearLayout5.addView(buttonsa.get(i)); 

     } 
    ll.addView(linearLayout1); 
     ll.addView(linearLayout2); 
     ll.addView(linearLayout3); 
     ll.addView(linearLayout4); 
     ll.addView(linearLayout5); 

my create button function below: 

private Button createButton(final int i) { 
final Button b = new Button(this); 
int mode = mGameSettings.getInt(GAME_PREFERENCES_GAME_MODE, 0); 
if (mode == 1) { 

    b.setText(" "+letter[i]); 
    b.setWidth(20); <-- this is where I thought I could change but does not 
    b.setHeight(20); <-- same here, just fills the small screen with big image 
          and cuts of the rest. 
    } 
    else { 
    b.setText((i+1) +" "); } 

答えて

0

最良の方法は、あなたを置くことですdrawableフォルダの60 * 60イメージとdrawable-large-hdpiまたはdrawable-large-mdpiフォルダの100 * 100イメージ、またはデバイスがドロワブルをピックアップするフォルダです。この方法で、通常のサイズの電話機や大画面デバイスでアプリケーションを実行します。画像はそれぞれの描画可能なフォルダからピックアップされ、デバイスの密度に応じてスケールされます。

関連する問題