Моя проблема в том, что результат макета выглядит по-разному на x10 mini и на откидной панели.
результат выглядит следующим образом:
Левый результат - результатX10 mini и правый от Motorola Flipout.К сожалению, у меня нет другого устройства ldpi для проверки, которое является «правильным».
Вот проблемы и то, что я пробовал до сих пор:
1.Размер текстового пузыря не одинаков.но они оба используют одну и ту же битовую карту (я, конечно, пишу ldpi на битовой карте).Основная проблема, как представляется, в том, что плотность X10 mini довольно высока для небольшого устройства.X10 mini имеет 156 точек на дюйм (mdpi = 160), а откидная крышка имеет 120 точек на дюйм.Это приложение имеет интегрированный admob и размер баннера также различаются.На X10 mini он выглядит хорошо, на FlipOut он намного больше.Он загружает размер для устройств MDDP.(Я только что упомянул это, потому что это могло бы помочь решить эту проблему.) Я назвал папку drawable "drawable-ldpi".
2.Первый аватар меньше, четче и яснее, потому что я установил плотность растрового изображения на DENSITIY_MEDIUM.bitmap.setDensity(DisplayMetrics.DENSITY_MEDIUM);
Если я установлю его на DENSITY_LOW, оно будет похоже на другие растровые изображения.И ширина и высота не 40px (как я масштабировал)
Вот код:
XML-файл макета:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/orange"
android:paddingTop="15dp"
>
<!-- Content -->
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- Text Bubble -->
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:paddingLeft="15dp"
android:paddingRight="15dp"
>
<TextView
android:id="@+id/text_avater"
style="@style/bubble_normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/avatar"
/>
</FrameLayout>
<!-- Avatar -->
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" android:layout_weight="0.5">
<!-- Avatar 1st row -->
<LinearLayout
android:orientation="horizontal"
android:layout_weight="1"
android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content">
<FrameLayout
android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button
android:id="@+id/button_avater1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar1"
/>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_avater2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar2"
/>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_avater3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar3"
/>
</FrameLayout>
</LinearLayout>
<!-- /Avatar 1st row -->
<!-- Avatar 2nd row -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_avater4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar0"
/>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_avater5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar0"
/>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_avater6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar0"
/>
</FrameLayout>
</LinearLayout>
<!-- /Avatar 2nd row -->
<!-- Avatar 3rd row -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_avater7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar0"
/>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_avater8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/avatar0"
/>
</FrameLayout>
</LinearLayout>
<!-- /Avatar 3rdst row -->
</LinearLayout>
<!-- /Avatar -->
<!-- Button -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.15"
android:gravity="center"
>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_mainmenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|bottom"
android:layout_weight="1"
android:text="@string/mainmenu"
style="@style/button_small"
/>
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<Button
android:id="@+id/button_done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|bottom"
android:layout_weight="1"
android:text="@string/done"
style="@style/button_small"
/>
</FrameLayout>
</LinearLayout>
<!-- /Button -->
</LinearLayout>
<!-- /Content -->
</RelativeLayout>
стиль выглядит следующим образомthis:
<style name="bubble_normal">
<item name="android:gravity">center</item>
<item name="android:textColor">@color/black</item>
<item name="android:textStyle">bold</item>
<item name="android:background">@drawable/text_bubble_normal</item>
<item name="android:textSize">@dimen/standard_text_size</item>
</style>
Размер растрового изображения составляет 210 x 93.
Растровые изображения аватара, которые я загружаю программно:
private void setupView() {
byte numberOfPlayer = (byte) StbApp.getPlayer().size();
int avatarSize = Player.avatarSize;
Log.d(TAG, "avatarSize: " + avatarSize); // avatarSize: 40px
Bitmap bitmap = Bitmap.createScaledBitmap(
StbApp.getPlayer().get(0).getAvatar(),
avatarSize,
avatarSize,
true
);
bitmap.setDensity(DisplayMetrics.DENSITY_MEDIUM);
BitmapDrawable bitmapDrawable = new BitmapDrawable(
bitmap
);
avatarBtn[0] = (Button) findViewById(R.id.button_avater1);
avatarBtn[0].setBackgroundDrawable(bitmapDrawable);
avatarBtn[0].setOnClickListener(this);
bitmapDrawable = new BitmapDrawable(
Bitmap.createScaledBitmap(
StbApp.getPlayer().get(1).getAvatar(),
avatarSize,
avatarSize,
true
)
);
avatarBtn[1] = (Button) findViewById(R.id.button_avater2);
avatarBtn[1].setBackgroundDrawable(bitmapDrawable);
avatarBtn[1].setOnClickListener(this);
bitmapDrawable = new BitmapDrawable(
Bitmap.createScaledBitmap(
StbApp.getPlayer().get(2).getAvatar(),
avatarSize,
avatarSize,
true
)
);
avatarBtn[2] = (Button) findViewById(R.id.button_avater3);
avatarBtn[2].setBackgroundDrawable(bitmapDrawable);
avatarBtn[2].setOnClickListener(this);
avatarBtn[3] = (Button) findViewById(R.id.button_avater4);
avatarBtn[3].setOnClickListener(this);
avatarBtn[4] = (Button) findViewById(R.id.button_avater5);
avatarBtn[4].setOnClickListener(this);
avatarBtn[5] = (Button) findViewById(R.id.button_avater6);
avatarBtn[5].setOnClickListener(this);
avatarBtn[6] = (Button) findViewById(R.id.button_avater7);
avatarBtn[6].setOnClickListener(this);
avatarBtn[7] = (Button) findViewById(R.id.button_avater8);
avatarBtn[7].setOnClickListener(this);
mainMenuBtn = (Button) findViewById(R.id.button_mainmenu);
mainMenuBtn.setOnClickListener(this);
doneBtn = (Button) findViewById(R.id.button_done);
doneBtn.setOnClickListener(this);
//prepare avatar_0 if needed
if (numberOfPlayer < 8){
Bitmap avatarNull = BitmapFactory.decodeResource(getResources(), R.drawable.avatar0);
avatarNull = Player.strokeBitmap(avatarNull);
avatarNull = Bitmap.createScaledBitmap(
avatarNull,
avatarSize,
avatarSize,
true
);
for (byte i = 3; i < 8; i++){
if (i < numberOfPlayer){
bitmapDrawable = new BitmapDrawable(
Bitmap.createScaledBitmap(StbApp.getPlayer().get(i).getAvatar(),
avatarSize,
avatarSize,
true)
);
}
else{
bitmapDrawable = new BitmapDrawable(avatarNull);
}
avatarBtn[i].setBackgroundDrawable(bitmapDrawable);
}
}
//8 player no avatar0 needed
else{
for (byte i = 3; i < numberOfPlayer; i++){
bitmapDrawable = new BitmapDrawable(StbApp.getPlayer().get(i).getAvatar());
avatarBtn[i].setBackgroundDrawable(bitmapDrawable);
}
}
}