我有一个形象(588×449)精灵集合不同的团队徽标.在
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”类型的属性.
解决方法
你不能使用与Android相同的方式使用精灵.有一种我可以想到的方式来模拟精灵:将精灵完全水平(或垂直)放置,然后使用
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)编写,Sprite将更难处理.