我有一个列表视图,其中包含一个图标、一个标题和一个副标题。
我的老板问我他想把那个图标改成动画。当他的意思是动画时,它只是显示三个图像继续,使它看起来像动画。
我已经通过在 res/anim 文件夹中编写一个 xml 来制作动画:
<?xml version="1.0" encoding="UTF-8"?>
<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="150" android:drawable="@drawable/icon_anmi_1"/>
<item android:duration="150" android:drawable="@drawable/icon_anmi_2" />
<item android:duration="150" android:drawable="@drawable/icon_anmi_3" />
</animation-list>
并通过在 value 文件夹中编写另一个进度条样式:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="animStyle" parent="@android:style/Widget.ProgressBar.Small">
<item name="android:indeterminateDrawable">@anim/icon_anim</item>
</style>
</resources>
我使用进度条,因为图标应该自动启动动画。它确实如此。此外,在我的列表适配器的 xml 布局中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dip"
android:padding="10dip"
>
<ProgressBar android:id="@+id/itemIcon" style="@style/animStyle"
android:layout_width="60px"
android:layout_height="60px"
android:layout_marginRight="10dip"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/itemInfo"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/itemIcon"
android:gravity="center_vertical"
android:textSize="18sp"
android:textStyle="bold"
android:ellipsize="marquee" android:singleLine="true"/>
<TextView
android:id="@+id/subtitle"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/itemIcon"
android:gravity="center_vertical"
android:textSize="10sp"
android:ellipsize="marquee" android:singleLine="true" android:layout_below="@+id/itemInfo"/>
</RelativeLayout>
在将适配器绑定到列表项时,我还对代码进行了更改:
adapterForList= new SimpleAdapter(this, hashMapListForListView, R.layout.s_item, new String[]{"imageUri","title","subtitle"},new int[]{R.id.itemIcon,R.id.itemInfo,R.id.subtitle});
adapterForList.setViewBinder(new SimpleAdapter.ViewBinder() {
public boolean setViewValue(View view, Object data,
String textRepresentation) {
if (view.getId() == R.id.itemIcon) {
//Not need progress
//int value = Integer.parseInt(data.toString());
//((ProgressBar) view).setProgress(value);
return true;
}
return false;
}
});
lv.setAdapter(adapterForList);
动画效果很好。我现在面临的唯一问题是我为动画放置的图像无法调整为正确的大小。它只能显示它的一部分。我想知道是否有办法让我定义要显示的图像的大小,以便它可以像图像视图一样工作。
谢谢!