В моем приложении для Android в настоящее время есть два макета для экрана-заставки: портретный и альбомный. Оба используют один и тот же простой формат - изображение того же размера, что и экран, сохраненное в простом линейном макете:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:src="@drawable/splash_p"
/>
</LinearLayout>
Используемое изображение имеет размер 320 x 480 пикселей, и Android автоматически изменяет его размер, чтобы он соответствовал экрану, независимо от размера экрана Устройство. Очевидно, что изображение не такое резкое, например, при изменении размера для планшета.
Я должен указать здесь, что моя цель - как можно больше уменьшить установленный размер окончательного приложения, и я знаю, что могу включать разные макеты и размеры одних и тех же изображений для каждого разного размера экрана.
Мой экран-заставка состоит из названия приложения в верхней трети экрана и изображения в двух нижних третях экрана. Чтобы сэкономить память, я хочу обрезать имя приложения и изображение на два отдельных изображения, а затем отображать их в линейном вертикальном макете для устройств, находящихся в портретном режиме. Затем я использую линейный горизонтальный макет изображения, а затем имя приложения для ландшафтного режима.
Для портретного макета у меня есть следующее:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
<View android:layout_height="45dp" android:layout_width="45dp" />
<ImageView android:layout_height="fill_parent"
android:src="@drawable/splashtext"
android:scaleType="fitCenter"
android:layout_gravity="center"
android:layout_width="fill_parent"></ImageView>
<View
android:layout_height="35dp"
android:layout_width="35dp" />
<ImageView
android:scaleType="fitCenter"
android:src="@drawable/splashpic"
android:layout_height="fill_parent" android:scaleType="fitCenter" android:layout_width="fill_parent" android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>
Когда я показываю вышеупомянутое в eclipse, это выглядит нормально для смартфонов, но изображения не масштабируются при отображении на планшете, хотя я использую аргумент android: scaleType = "fitCenter". Я пробовал использовать провалы вместо fill_parent в imageview layout_width и layout_height, но это тоже не работает.
Что я делаю не так? Есть другой способ сделать это?
Спасибо.
Я отредактировал вопрос, включив в него этот измененный XML, на основе справки @ KaHa6u ниже. Итак, теперь у меня есть:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<View
android:layout_height="15dp"
android:layout_width="15dp"
/>
<ImageView android:layout_height="wrap_content"
android:src="@drawable/splashtext"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_weight="1">
</ImageView>
<View
android:layout_height="15dp"
android:layout_width="15dp"
/>
<ImageView
android:scaleType="fitXY"
android:src="@drawable/splashpic"
android:adjustViewBounds="false"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="4"
android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>
Который масштабируется по вертикали, но не по горизонтали, поэтому при увеличении размера экрана я получаю высокие тонкие изображения.