实现一个可以左右滑动切换预览图带标题的相册
废话不多说,先来看看效果
(预览图较小)
(预览图较大)
(预览图最大)
按照文件夹显示:
实现思路
方法一: 可以用一个ListView嵌套GridView来实现。ListView的每个Item是一个显示标题的TextView和一个GridView组成。但是这种方式的实现需要我们自定义GridView,重写其OnMeasure()方法,否则GridView可能无法正常显示。而且优化不好容易卡顿
方法二:使用开源项目:[GitHub地址]https://github.com/TonicArtos/StickyGridHeaders 我们使用其中的StickyGridHeadersGridView和其适配器StickyGridHeadersSimpleAdapter展现出带标题的效果。至于左右滑动切换预览图的逻辑处理逻辑我们放在另外一个自定义GridView里面去实现。
1 首先实现StickyGridHeadersGridView的适配器
public class MyStickyAdapter extends BaseAdapter implements StickyGridHeadersSimpleAdapter
{
String flag_sort;//根据什么排序的标志,可以更具日期,类型,还有文件来排序,默认按照时间排序
private LayoutInflater inflater;
LinkedHashMap<String, List<Picture>> listLinkedHashMap;
private Context mContext;
private List<Picture> pictures;
public MyStickyAdapter(Context paramContext, String paramString)
{
this.mContext = paramContext;
this.flag_sort = paramString;
this.inflater = LayoutInflater.from(paramContext);
this.pictures = new ArrayList();
init();
}
private void init()
{
if (this.flag_sort.equals("time_sort"))
{
this.pictures = MainActivity1.pictures_timesort;//照片数据保存在MainActivity1中,在我的项目里,这是主Activity
return;
}
if (this.flag_sort.equals("folder_sort"))
{
this.pictures = MainActivity1.pictures_default;
return;
}
if (this.flag_sort.equals("type_sort"))
{
this.pictures = MainActivity1.pictures_type;
return;
}
this.pictures = MainActivity1.pictures_timesort;
}
@Override
public int getCount()
{
return this.pictures.size();
}
@Override
public long getHeaderId(