2011-04-20 71 views
10

我有一個圖像(588x449)精靈與不同團隊標誌的集合。在Android中,我有相應的ImageView顯示:在Android上使用圖像精靈

 <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'類型的屬性。

回答

42

您不能在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),精靈將更難處理。

+4

,謝謝,我只是不會使用它們 – mattyp 2011-04-20 15:57:54

+0

事實上,精靈增加的內存使用情況往往被忽視。避免! – 2011-04-20 16:26:54

+0

你建議用什麼來代替精靈呢?我知道openGL是爲動畫而建議的,但是如果我是一個非常簡單的動畫,比如一個簡筆畫走路怎麼辦。如果不是精靈表,應該如何說明呢? – uesports135 2016-03-12 13:47:22