Использование спрайтов изображений на android

У меня есть образ (588x449) спрайт с коллекцией разных командных логотипов. В Android у меня есть соответствующий ImageView, отображающий это:

        <ImageView android:id="@+id/image_team_logo" 
            android:src="@drawable/teamheaderssprite" 
            android:layout_height="25dp" 
            android:layout_marginLeft="5dp" 
            android:layout_marginTop="10dp" 
            android:layout_width="296dp" android:scaleType="matrix"/>   

Вышеуказанное будет правильно отображать часть моего изображения в верхнем левом углу. Моя проблема в том, что я хочу, чтобы можно было перемещать позицию на отображаемом изображении, чтобы я мог перейти в другую область спрайта. Это довольно распространенная практика в html/css, я просто не вижу свойства типа position в android xml.

Ответ 1

Вы не можете использовать спрайты так же, как на Android, с HTML. Есть один способ, которым я могу придумать, чтобы имитировать спрайты: Положите спрайт полностью горизонтально (или вертикально), затем используйте ClipDrawable, чтобы определить каждый как новую часть спрайта. Затем определите уровень каждого вида, если это необходимо. (Если изображения в спрайте не имеют одинакового размера, вам может потребоваться также использовать InsetDrawable.)

Однако я серьезно пересмотрел бы использование спрайтов в Android. Есть причины, по которым веб-страницы используют спрайты, и это не потому, что им проще - это потому, что ускоряет веб-страницы, потому что вам не нужно делать несколько HTTP-запросов. Поскольку изображения уже будут в вашем релизе APK, вы ничего не получите, написав их.

Не только это, но вы навредили написанию на Android:

  • Ограничения памяти на некоторых телефонах Android намного ниже, чем вы могли ожидать. Если вся ваша графика находится в памяти в любой момент времени, это уменьшает объем памяти, который у вас есть для всего остального.

  • Спрайты будут сложнее обрабатывать, как только вы начнете писать для разных плотностей экрана (ldpi, mdpi, hdpi).