Использование спрайтов изображений на android
У меня есть изображение (588x449) sprite с коллекцией различных логотипов команды. В 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, я просто не вижу свойства типа "позиция" в android XML.
1 ответов
вы не можете использовать спрайты на Android вы можете с HTML. Есть один способ, который я могу придумать для имитации спрайтов: выложите спрайт полностью горизонтально (или вертикально), а затем используйте ClipDrawable чтобы определить каждый уровень как новую часть спрайта. Затем определите соответствующий уровень каждого представления. (Если изображения в спрайте не все одинакового размера, вам также может потребоваться использовать InsetDrawable.)
тем не менее, я бы серьезно переосмыслить использование спрайтов в Android. Есть причины, почему веб-страницы используют спрайты, и это не потому, что они проще - это потому, что он ускоряет веб-страницы, потому что вам не нужно делать несколько HTTP-запросов. Поскольку изображения уже будут в вашем релизе APK, вы ничего не получите, спрайтинг их.
не только это, но вы делаете некоторый вред, спрайтинг на Android:
ограничения памяти на некоторых телефонах Android много ниже, чем можно было ожидать. Если вся ваша графика находится в памяти в любой момент времени, это снижает объем памяти, который у вас есть для всего остального.
спрайты будет сложнее обрабатывать, как только вы начнете писать для различных плотностей экрана (ldpi, mdpi, hdpi).