Android разбивает фоновое изображение: использование растрового изображения изменяет размер изображения?

Я хотел бы иметь мозаичный фон в созданном мной макете в направлении x. Я следовал некоторым хорошим инструкциям, найденным в Интернете, чтобы правильно расположить плитку, но исходное изображение теперь немного растянуто по вертикали. Я думаю, что это связано с природой растровых файлов.

Пример изображения:

введите здесь описание изображения

Первое изображение является фоновым изображением перед мозаичным размещением. Второе изображение после тайлинга. Как видите, изображение немного растянуто по вертикали, а также выглядит немного размытым из-за изменения размера.

Я пробовал размещать изображения как в папке drawable-hdpi, так и в папке drawable. Я попытался поместить файл XML в обе папки. Все это, казалось, не имело значения.

Вот код макета, который сгенерировал эти два изображения:

<?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">
<ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:background="@drawable/bg" />
<ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:background="@drawable/bg_repeat" />
</LinearLayout>

«@drawable/bg» — это само изображение, bg.png. «@drawable/bg_repeat» — это следующий растровый XML-файл:

<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/cdetail_bg_unclaimed_details"
android:antialias="false"
android:dither="false"
android:filter="false"
android:gravity="center|center_vertical"
android:tileMode="repeat" />

Есть ли альтернатива этому для тайлинга x-repeat? Или есть какой-то обходной путь, который я еще не исследовал? Я изменил все параметры сглаживания, сглаживания, фильтрации и т. д. Казалось, ничего не изменилось.

Спасибо за помощь!

РЕДАКТИРОВАТЬ: это похоже на ошибку при использовании инструмента «Графический макет». На моем телефоне все нормально.


person Rockmaninoff    schedule 13.06.2011    source источник


Ответы (2)


Похоже, это ошибка при использовании инструмента «Графический макет». На моем телефоне все нормально.

person Rockmaninoff    schedule 15.06.2011

Вы не можете повторить растровый фон в одном направлении, используя xml, но код Java, безусловно, может это сделать.

BitmapDrawable bitmap = (BitmapDrawable) getResources().getDrawable(R.drawable.image);
 bitmap.setTileModeX(TileMode.REPEAT);

Итак, теперь, если вы установите это «растровое изображение» на фон любого представления

Например: если у нас есть TextView "текст", тогда text.setBackgroundDrawable(bitmap) установит фон этого text-view
в "bitmap".

Он будет повторяться в направлении x, но сохранит свою высоту в направлении y.

Надеюсь это поможет.

person sagarpatidar    schedule 26.06.2013