Оптимизация фонового изображения Android ListView - PullRequest
1 голос
/ 05 января 2012

Я столкнулся с проблемой, проблема в том, что у меня есть ListView, и я хочу установить фоновое изображение для этого ListView. Мне удалось добиться этого с помощью атрибута background в XML и установить cacheColorHint на #00000000.

Если я сделаю прозрачный цвет cacheColorHint, как указано выше, производительность прокрутки значительно упадет. На Android-смартфонах мой ListView работает хорошо, но на Android-планшете ListView движется очень медленно.

Изображение, которое я использую как Drawable, имеет размер около 500x800px (для планшетов), для телефонов - меньше. Iv'e также пытался установить уменьшенное изображение (например, для телефонов), но оно то же самое.

Мое изображение имеет только логотип в нижней части экрана размером около 100 пикселей height, а остальное - белого цвета.

Кто-нибудь знает, как я могу заставить ListView работать должным образом или хотя бы лучше?

Спасибо!

Ответы [ 3 ]

1 голос
/ 06 января 2012

Мне удалось оптимизировать скорость ListView, отключив белый цвет и установив изображение логотипа в ImageView.

Вот мой XML сейчас:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
          android:layout_height="fill_parent" 
          android:background="@color/white">

<ImageView android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="fitXY"
           android:src="@drawable/background_img" android:layout_alignParentBottom="true"/>

<ListView android:layout_width="fill_parent" android:layout_height="fill_parent"
       android:drawSelectorOnTop="false" android:cacheColorHint="#00000000"
       android:smoothScrollbar="true" android:scrollingCache="true"/>

0 голосов
/ 05 января 2012

К сожалению, кроме очевидного решения не с использованием изображения в качестве фона, вы сделали все возможное, чтобы оптимизировать ListView.Одна вещь, которую вы можете попробовать, - установить cacheColorHint на наиболее доминирующий цвет в изображении.

Что я имею в виду под этим, глядя на книгу В примере из предыдущей ссылки вы можете установить цвет cacheColorHint на какой-то оранжевый, что приведет к тому, что ваши операции прокрутки будут намного дешевле, по сравнению с прозрачным (#00000000).

0 голосов
/ 05 января 2012

Она - то, что вы хотите реализовать:

LayerDrawable - Drawable, который управляет массивом других Drawables.Они нарисованы в порядке массива, поэтому элемент с наибольшим индексом будет нарисован сверху.

ИЛИ

используйте макет кадра для достижения желаемого эффекта.http://tinyurl.com/82ycrpd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...