我有一个ListView
,其布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:inevent="http://schemas.android.com/apk/lib/com.estudiotrilha.inevent.view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingBottom="8dp"
android:id="@+id/list_events"
android:addStatesFromChildren="true" >
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="180dp"
android:padding="1dp"
android:background="@drawable/post" >
<ImageView
android:id="@+id/imageEventCover"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/event_cover"
android:scaleType="centerCrop" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:visibility="gone"
android:layout_marginTop="25dp" />
<com.estudiotrilha.inevent.view.NewTextView
android:id="@+id/textIsEnrolled"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="ENROLLED"
android:textColor="@color/infoText"
inevent:textFor="small"
android:background="@color/infoBoxRed"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_margin="10dp" />
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/event_mark"
android:layout_marginBottom="12dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="10dp"
android:paddingBottom="10dp" >
<com.estudiotrilha.inevent.view.NewTextView
android:id="@+id/textEventName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lisbon Challenge"
inevent:textFor="h3"
android:paddingBottom="10dip"/>
<ImageView
android:id="@+id/imageCalendar"
android:layout_below="@+id/textEventName"
android:layout_width="18dp"
android:layout_height="18dp"
android:contentDescription="@string/facebookHolder"
android:src="@drawable/ic_action_go_to_today" />
<com.estudiotrilha.inevent.view.NewTextView
android:id="@+id/textEventDuration"
android:layout_below="@+id/textEventName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/imageCalendar"
android:layout_marginLeft="5dp"
android:textColor="#555"
inevent:textFor="small"
android:text="MAI 05-11, 2014" />
<ImageView
android:layout_below="@+id/textEventName"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_toLeftOf="@+id/textEventPlace"
android:contentDescription="@string/facebookHolder"
android:src="@drawable/ic_action_place" />
<com.estudiotrilha.inevent.view.NewTextView
android:layout_below="@+id/textEventName"
android:id="@+id/textEventPlace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="5dp"
android:textColor="#555"
inevent:textFor="small"
android:text="Lisbon, Portugal" />
</RelativeLayout>
</RelativeLayout>
<View android:layout_width="fill_parent"
android:layout_marginRight="2dp"
android:layout_marginLeft="2dp"
android:layout_height="3dp"
android:background="@drawable/shadow"/>
</LinearLayout>
在ListView
中,将放置几个带图像的项目。
以下是真实交易的样本:
问题是所有图像都是异步加载的。
我正在使用Universal Image Loader加载这些图片。
如何优化列表?
感谢。
答案 0 :(得分:1)
快速滚动被称为“投掷”,在动态加载图片的列表(来自网络或本地商店)上自然会非常密集,所以在移动设备上处理图片的唯一方法平台是
a)通过添加临时&#39;加载图片来改善用户体验:
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic_stub) // resource or drawable
.build();
b)在发生投掷时,不要尝试任何过程密集渲染。屏幕移动速度太快,无论如何都无法呈现任何有用的东西,所以你也可以等到屏幕没有移动然后再尝试渲染任何东西:
boolean pauseOnScroll = false; // or true
boolean pauseOnFling = true; // or false
PauseOnScrollListener listener = new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling);
listView.setOnScrollListener(listener);