照片墙功能在很多应用中都很常见。其设计思路通常是用 GridView 控件当作'墙',随着滚动将图片贴在上面,图片可来自本地或网络。制作此类应用的关键在于图片资源的释放机制,若没有合理管理,图片过多会导致程序崩溃。
本示例重点解决因图片过多导致崩溃的问题,核心算法使用 Android 提供的 LruCache 类(3.1 版本起提供,早期版本需导入 android-support-v4)。
1. 准备图片资源
从官方 Demo 获取图片源 URL 列表,代码如下:
public class Images {
public final static String[] imageThumbUrls = new String[] {
"https://lh6.googleusercontent.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s160-c/A%252520Photographer.jpg",
"https://lh4.googleusercontent.com/--dq8niRp7W4/URquVgmXvgI/AAAAAAAAAbs/-gnuLQfNnBA/s160-c/A%252520Song%252520of%252520Ice%252520and%252520Fire.jpg",
// ... (此处省略部分 URL 以保持简洁,实际代码应包含完整列表)
"https://lh4.googleusercontent.com/-e9NHZ5k5MSs/URqvMIBZjtI/AAAAAAAAAbs/1fV810rDNfQ/s160-c/Yosemite%252520Tree.jpg"
};
}
2. 定义布局文件
新建 activity_main.xml 作为主布局,加入 GridView:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/photo_wall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnWidth="90dip"
android:stretchMode=
=
=
= />


