首先说一下需求吧,,网络加载的图片用GridView显示,点击图片放大预览,同时还要显示图片的标题。很简单的需求,我整了快一天。。。想哭!! 以前真的没接触过这个功能。以至于我花了好一天的时间研究,也是找了很多方法,看了好多大牛写的Demo。但还是没整明白怎么实现,方法太多,还杂。尝试着用Kotlin写,但是以失败告终。找的方法多了,看的也多了的时候,自己就能找到些许思路。
OK,回到正题。 ImageLoader也能实现,看官方的Demo是可以的,但为什么不选择呢,有点复杂(懒)。。咳咳,后来又是一次大搜索,找到了PhotoView,,而且用法据说很简单。跟ImageView一样简单。
这就是用法,这就结束了,简单的让我无言以对,,GitHub地址———— PhotoView
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/photo_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
找了很多解释,没有多余的废话。。
缕清思路
1、先写主布局,用来显示你的图片(ListView GridView都行,,不嫌累写一排ImageView都行,,哈哈)
2、主布局的适配器。不多说
3、写另一个Activity,用来显示浏览图片,这页要有一个ViewPager。实现左右滑动,ViewPager的布局就是PhotoView了
4、在MainActivity的适配器中从Bean中遍历出图片地址,通过Intent的方式传值过去。在SecondActivity的PagerAdapter中通过ImageLoader加载。
大致就这样,可能有点乱。先将就下吧,后续给源码。。
局部代码
viewHolder.photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, PhotoViewActivity.class);
intent.putStringArrayListExtra("imageList", imageList);
intent.putStringArrayListExtra("imageName", imageName);
intent.putExtra("index", i);
context.startActivity(intent);
}
});
LinearLayout view = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.img_browse, null);
PhotoView img = (PhotoView) view.findViewById(R.id.img_plan);
TextView imgName = view.findViewById(R.id.imgName);
img.setTag(imgUrl);
imgName.setTag(nameInit);
ImageLoaderUtil.getInstance().displayListItemImage(imgs.get(position), img);
imgName.setText(nameInit);
看到PhotoView没,,跟ImageView一样的用法这个要写在PagerAdapter的
@Override
public Object instantiateItem(ViewGroup container, int position) {
}
这个方法里
基本逻辑都在这里面,显示也是在这里。 之后会整理下代码,到时候在把代码贴出来。
自己的一个小小笔记,如能帮到你,实在是荣幸,不明白的可以一起讨论研究,共同进步。