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) +" "); }