3

Я абсолютно новый в разработке Android, и у меня есть некоторые сомнения относительно правильного способа вставки заголовка в мое первое приложение.Каков наилучший способ вставить это изображение (с правильным размером) в мой Android-проект?

Так что у меня следующая ситуация: я должен вставить изображение в качестве заголовка (в immage и под ней есть содержание, понятие заголовка классический веб-сайт), так что я сделал что-то вроде этого:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="0dp"> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="fill_parent" 
     android:scaleType="fitStart" 
     android:layout_height="250dp" 
     android:background="@drawable/carbonara" /> 
     <!-- 
     android:src="@drawable/carbonara"/> 
     android:background="@drawable/carbonara" /> 
     --> 


    <TextView android:id="@android:id/text1" 
     style="@style/pastaTitleTextStyle" /> 


</LinearLayout> 

Как вы можете видеть, я использую этот параметр, чтобы установить изображение заголовка:

android:background="@drawable/carbonara" 

Так я использую андроида: фон свойство для установки carbonara.jpg я mage как фон LinearLayout заголовок, который должен горизонтально заполнять экран (потому что я указал: android: layout_width = "fill_parent").

Итак, используя настройки android: background, кажется, что все работает нормально на всем экране (это то, что я говорю об изменении устройства в предварительном просмотре активности Android Studio), потому что я устанавливаю изображение в качестве фона, поэтому я думаю что он «растягивается», чтобы заполнить пространство.

Но я не знаю, пользуетесь ли вы андроид: фон является правильным сайтом. Кто-то сказал мне, что лучше использовать:

android:src="@drawable/carbonara" 

вместо этого Android: установка фона. Это правда? Почему, если это заголовок, который нужно заполнить? (В HTML \ CSS это довольно распространенное использование собственности фоновое изображение, чтобы сделать этот вид материала в макете ...)

Так что я tryied изменить делать:

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="fill_parent" 
    android:scaleType="fitStart" 
    android:layout_height="250dp" 
    android:src="@drawable/carbonara" /> 

Проблема заключается в том, что теперь изображение не заполняет все пространство для некоторого размера экрана

Например, это установка предварительного просмотра Nexus 5 в качестве устройства (или, возможно, также плотность пикселей?):

enter image description here

Как вы можете видеть справа, есть пробел. Зачем? Это изображение недостаточно для этого экрана или что?

Использование андроида: фон = «@ вытяжка/карбонара» вместо андроида: SRC = «@ вытяжка/карбонар» я это не проблема, и образ его показали в довольно приличном образом (возможно, Лил горизонтально вытянутый).

Является ли это действительно так ужасно использование андроида: фон вместо андроида: ЦСИ для таких ситуаций?

Так что я действительно не знаю, как правильно решить эту проблему: если использование android: background нехорошо, что мне делать? Мне нужно создать другую версию с другим размером моего изображения и поместить ее в конкретный путь в папку /res/? Или что? Я немного смущен.

+1

использование scaleType = fitXY –

+0

@kishorejethava нормально, кажется, работает, но таким образом я получаю один и тот же образ, что царапает У меня есть андроид: фон. Это не драматично, но каково преимущество этого решения в отношении использования android: background? – AndreaNobili

ответ

2

Действительно ли это так ужасно использовать андроид: вместо этого андроид: src для этих ситуаций?

Его не касается background и rsc атрибутов. Android работает на различных устройствах, которые предлагают разные размеры экрана и плотность (dpi). Вы не можете использовать одно и то же изображение для Nexus 5 и Nexus S.

Решение: Вам придется сделать несколько изображений в зависимости от размера экрана и dpi

Набор из шести обобщенных плотностей:

-ldpi (низкий) ~ 120dpi
-mdpi (среда) ~ 160dpi
-hdpi (высокий) ~ 240dpi Nexus S
-xhdpi (сверхвысокого) ~ 320dpi Moto G
-xxhdpi (экстра-экстра-высокий) ~ 480dpi Nexus 5
-xxxhdpi (экстра-экстра-экстра-высокий) ~ 640dpi Galaxy S6 и S7

Подробнее Supporting Multiple Screens

1

При использовании ImageView android: src - правильный выбор, потому что он помогает вам правильно подобрать свой образ. Как уже говорилось, вы можете использовать android: scaleType, чтобы сообщить системе, как должно отображаться ваше изображение. Возможные значения показаны here
Итак, если вы хотите, чтобы ваше изображение было в том же формате, но с учетом границ, вы должны выбрать center_crop, но это может обрезать некоторые части изображения сверху/снизу. О размере изображения: возможно, вы слышали о кодах плотности, используемых в Android: они варьируются от LDPI до XXXHDPI, которые связаны с масштабными коэффициентами. Вы можете найти более подробную информацию об этом here. Вы также считаете правильным, что у вас должно быть ваше изображение в различных решениях, доступных в папке с плотностью ковша в * res/**. На Nexus 5X ваше изображение должно быть шириной 1080 пикселей, чтобы соответствовать всему экрану. Ведро плотности, используемое на этом телефоне, - XXHDPI. Вы можете найти более подробную информацию об этих показателях here.

1

андроид: фон существует для всех видов. Как следует из названия, это то, что будет на заднем плане.

android: src существует для ImageViews и его подклассов. Вы можете думать об этом как о переднем плане. Поскольку ImageView является подклассом View, у вас даже есть андроид: фон для этого.

Если изображение переднего плана меньше фонового изображения, тогда будет видна часть фона, которая не покрыта передним планом.

Кроме того, вы можете использовать прозрачность на переднем плане, и в этом случае фон будет видимым (прозрачным).