我有一个图像(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中很常见,我只是没有在android xml中看到'position'类型属性。
答案 0 :(得分:47)
您无法在Android上以相同的方式使用精灵,也可以使用HTML。我可以想到一种模拟精灵的方法:将精灵完全水平(或垂直)放置,然后使用ClipDrawable将每个级别定义为精灵的新部分。然后根据需要定义每个视图的级别。 (如果精灵中的图像大小不同,您可能也需要使用InsetDrawable。)
但是,我会认真重新考虑使用Android中的精灵。有网页使用精灵的原因,并不是因为它们更容易 - it's because it speeds up webpages because you don't have to make multiple HTTP requests。由于图像已经在你的发布APK中,你不会通过精灵来获得任何东西。
不仅如此,你还会通过在Android上精灵来做一些伤害:
某些Android手机的内存限制远低于您的预期。如果您的图形在任何给定时间都在内存中,那么就会降低其他所有内存的内存量。
一旦开始编写不同的屏幕密度(ldpi,mdpi,hdpi),精灵将难以处理。