Android仿微信朋友圈添加图片的实例代码
程序员文章站
2022-07-11 23:16:04
*惯,先上图,着急用的朋友,直接带走demo,先拿来用吧,毕竟老板催的紧,先把工作完成了,再看也来得及,是吧!
在项目中这种添加图片上传的效果应该是非常常见的,...
*惯,先上图,着急用的朋友,直接带走demo,先拿来用吧,毕竟老板催的紧,先把工作完成了,再看也来得及,是吧!
在项目中这种添加图片上传的效果应该是非常常见的,后面有个添加的按钮应该让有些童鞋不知道咋办了吧,其实没那么复杂,通过gridview就可以实现了
先说明一下,这里主要是讲添加图片的效果,至于图片选择器用的是第三方库photopicker,6.0权限用的是第三方库easypermission
1、首先这是用gridview实现的
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff" android:orientation="vertical"> <!--展示上传的图片--> <gridview android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" android:columnwidth="60dp" android:horizontalspacing="10dp" android:numcolumns="auto_fit" android:verticalspacing="10dp" /> </linearlayout>
adapter
package com.dearxy.wxcircleaddpic; import android.content.context; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import com.bumptech.glide.glide; import java.util.list; /** * 展示上传的图片的gridview的适配器 * 作者: 周旭 on 2017/6/21/0021. */ public class gridviewadapter extends android.widget.baseadapter { private context mcontext; private list<string> mlist; private layoutinflater inflater; public gridviewadapter(context mcontext, list<string> mlist) { this.mcontext = mcontext; this.mlist = mlist; inflater = layoutinflater.from(mcontext); } @override public int getcount() { //return mlist.size() + 1;//因为最后多了一个添加图片的imageview int count = mlist == null ? 1 : mlist.size() + 1; if (count > mainconstant.max_select_pic_num) { return mlist.size(); } else { return count; } } @override public object getitem(int position) { return mlist.get(position); } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { convertview = inflater.inflate(r.layout.grid_item, parent,false); imageview iv = (imageview) convertview.findviewbyid(r.id.pic_iv); if (position < mlist.size()) { //代表+号之前的需要正常显示图片 string picurl = mlist.get(position); //图片路径 glide.with(mcontext).load(picurl).into(iv); } else { iv.setimageresource(r.mipmap.zj);//最后一个显示加号图片 } return convertview; } }
mainactivity
这里只贴出了拿到相册返回的图片的路径后的处理
//初始化展示上传图片的gridview private void initgridview() { mpiclist = new arraylist<>(); mgridviewadapter = new gridviewadapter(mcontext, mpiclist); gridview.setadapter(mgridviewadapter); gridview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { if (position == parent.getchildcount() - 1) { //添加凭证图片 checkphotopermission(); } else { //查看大图 intent intent = new intent(mcontext, plusimageactivity.class); //图片的路径 intent.putextra(mainconstant.pic_path, mpiclist.get(position)); intent.putextra(mainconstant.position, position); startactivityforresult(intent, mainconstant.request_code_main); } } }); } // 处理返回照片地址 private void refreshadapter(final arraylist<string> paths) { for (int i = 0; i < paths.size(); i++) { log.i(tag, "path:---->" + paths.get(i)); proofpiccount++; if (proofpiccount <= mainconstant.max_select_pic_num) { //添加图片到gridview mpiclist.add(paths.get(i)); } } mgridviewadapter.notifydatasetchanged(); }
github地址:https://github.com/zhouxu88/wxcircleaddpic
总结:其实原理就是把数据的size+1,做为添加按钮的放置,然后判断下有9张图就不显示添加按钮,并且size也不+1,就这样,一个带添加按钮的gridview就好了~希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 谷歌google浏览器怎么清除浏览记录?