0

我有一个列表视图,其中包含一个图标,一个标题和一个字幕。如何在进行自定义动画时调整可绘制项目(图像)的进度条?

我的老板问我他想把这个图标改成动画。当他指的是动画时,它只是显示三个图像继续,使它看起来像动画。

<?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"?> 
<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> 

并通过价值的文件夹写另一进度栏样式因为图标应该自动启动动画。它做什么。此外,在我的名单适配器的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); 

动画工作正常。我现在面临的唯一问题是我为动画放置的图像无法调整到正确的大小。它只能显示它的一部分。我想知道是否有办法让我定义要显示的图像的大小,以便它可以像图像视图一样好。

谢谢!

回答

0

这可以通过各种技术解决,具体取决于目标平台。如果您的目标是API 11或更高版本,则ViewFlipper可以执行动画。

但是,当您正在尝试ProgressBar解决方案的动画时,我想你也会瞄准旧版Android。在这些情况下,可以通过恢复到ImageView并从计时器设置图像的可绘制来解决问题。

该技术描述在https://stackoverflow.com/a/14991972/1950496并且可以修改以适应RemoteViews问题。

相关问题