在android上使用图像精灵

时间:2011-04-20 15:35:35

标签: android image sprite

我有一个图像(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'类型属性。

1 个答案:

答案 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上精灵来做一些伤害:

  1. 某些Android手机的内存限制远低于您的预期。如果您的图形在任何给定时间都在内存中,那么就会降低其他所有内存的内存量。

  2. 一旦开始编写不同的屏幕密度(ldpi,mdpi,hdpi),精灵将难以处理。