【问题标题】:Using image sprites on android在 android 上使用图像精灵
【发布时间】:2011-08-09 15:06:57
【问题描述】:

我有一个图像 (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 中没有看到“位置”类型属性。

【问题讨论】:

    标签: android image sprite


    【解决方案1】:

    在 Android 上,您不能像在 HTML 上那样使用 sprite。不过,我可以想到一种模拟精灵的方法:将精灵完全水平(或垂直)放置,然后使用ClipDrawable 将每个级别定义为精灵的新部分。然后根据需要定义每个 View 的级别。 (如果 sprite 中的图像大小不同,您可能还需要使用 InsetDrawable。)

    但是,我会认真地重新考虑在 Android 中使用精灵。网页使用精灵是有原因的,并不是因为它们更容易 - it's because it speeds up webpages because you don't have to make multiple HTTP requests。由于图像已经在您的发布 APK 中,因此您不会通过 spriting 获得任何东西。

    不仅如此,您在 Android 上使用 spriting 也会造成一些伤害:

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

    2. 一旦您开始为不同的屏幕密度(ldpi、mdpi、hdpi)编写,Sprite 将更难处理。

    【讨论】:

    • 确实,精灵增加的内存使用量经常被忽视。避免!
    • 那你建议用什么来代替精灵呢?我知道 openGL 被建议用于动画,但如果我是一个非常简单的动画,比如一个简笔画行走。如果不是精灵表,应该如何说明?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多