全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android仿微信朋友圈添加图片的实例代码

先上图,着急用的朋友,直接带走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就好了~希望对大家的学习有所帮助,也希望大家多多支持。


# Android仿微信朋友圈  # Android朋友圈添加图片  # 的是  # 第三方  # 这是  # 上传  # 也不  # 有个  # 就不  # 再看  # 先把  # 贴出  # 上传图片  # 大家多多  # 就可以  # 正常显示  # 上图  # 来用  # 咋办  # 图片上传  # 主要是  # 实现了 


相关文章: 电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  山东网站制作公司有哪些,山东大源集团官网?  内网网站制作软件,内网的网站如何发布到外网?  存储型VPS适合搭建中小型网站吗?  如何用PHP快速搭建CMS系统?  如何选择高效便捷的WAP商城建站系统?  如何登录建站主机?访问步骤全解析  制作证书网站有哪些,全国城建培训中心证书查询官网?  定制建站是什么?如何实现个性化需求?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  建站之星后台管理:高效配置与模板优化提升用户体验  表情包在线制作网站免费,表情包怎么弄?  建站之星24小时客服电话如何获取?  建站之星微信建站一键生成小程序+多端营销系统  建站主机选哪种环境更利于SEO优化?  微信推文制作网站有哪些,怎么做微信推文,急?  微信小程序 五星评分(包括半颗星评分)实例代码  如何解决VPS建站LNMP环境配置常见问题?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  制作销售网站教学视频,销售网站有哪些?  如何通过.red域名打造高辨识度品牌网站?  如何快速搭建高效可靠的建站解决方案?  建站主机CVM配置优化、SEO策略与性能提升指南  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  寿县云建站:智能SEO优化与多行业模板快速上线指南  在线教育网站制作平台,山西立德教育官网?  非常酷的网站设计制作软件,酷培ai教育官方网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  已有域名如何免费搭建网站?  如何在服务器上配置二级域名建站?  宝塔面板创建网站无法访问?如何快速排查修复?  利用JavaScript实现拖拽改变元素大小  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何制作网站标识牌,动态网站如何制作(教程)?  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何用西部建站助手快速创建专业网站?  高端云建站费用究竟需要多少预算?  清除minerd进程的简单方法  ,怎么在广州志愿者网站注册?  如何通过FTP空间快速搭建安全高效网站?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  高端建站如何打造兼具美学与转化的品牌官网?  制作门户网站的参考文献在哪,小说网站怎么建立?  微信h5制作网站有哪些,免费微信H5页面制作工具?  网站制作免费,什么网站能看正片电影?  如何通过万网虚拟主机快速搭建网站?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  黑客如何利用漏洞与弱口令入侵网站服务器?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  建站ABC备案流程中有哪些关键注意事项? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。