Android仿微信朋友圈添加圖片的實(shí)例代碼
先上圖,著急用的朋友,直接帶走Demo,先拿來(lái)用吧,畢竟老板催的緊,先把工作完成了,再看也來(lái)得及,是吧!

在項(xiàng)目中這種添加圖片上傳的效果應(yīng)該是非常常見(jiàn)的,后面有個(gè)添加的按鈕應(yīng)該讓有些童鞋不知道咋辦了吧,其實(shí)沒(méi)那么復(fù)雜,通過(guò)GridView就可以實(shí)現(xiàn)了
先說(shuō)明一下,這里主要是講添加圖片的效果,至于圖片選擇器用的是第三方庫(kù)photopicker,6.0權(quán)限用的是第三方庫(kù)EasyPermission
1、首先這是用GridView實(shí)現(xiàn)的
<?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;//因?yàn)樽詈蠖嗔艘粋€(gè)添加圖片的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()) {
//代表+號(hào)之前的需要正常顯示圖片
String picUrl = mList.get(position); //圖片路徑
Glide.with(mContext).load(picUrl).into(iv);
} else {
iv.setImageResource(R.mipmap.zj);//最后一個(gè)顯示加號(hào)圖片
}
return convertView;
}
}
MainActivity
這里只貼出了拿到相冊(cè)返回的圖片的路徑后的處理
//初始化展示上傳圖片的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
總結(jié):其實(shí)原理就是把數(shù)據(jù)的size+1,做為添加按鈕的放置,然后判斷下有9張圖就不顯示添加按鈕,并且size也不+1,就這樣,一個(gè)帶添加按鈕的GridView就好了~希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 如何實(shí)現(xiàn)亮度自動(dòng)調(diào)節(jié)
這篇文章主要介紹了Android 如何實(shí)現(xiàn)亮度自動(dòng)調(diào)節(jié),幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下2021-04-04
android canvas drawText()文字居中效果
這篇文章主要為大家詳細(xì)介紹了android canvas drawText()文字居中效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Flutter狀態(tài)管理Bloc之定時(shí)器示例
這篇文章主要為大家詳細(xì)介紹了Flutter狀態(tài)管理Bloc之定時(shí)器示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Android程序開(kāi)發(fā)ListView+Json+異步網(wǎng)絡(luò)圖片加載+滾動(dòng)翻頁(yè)的例子(圖片能緩存,圖片不錯(cuò)亂)
這篇文章主要介紹了Android程序開(kāi)發(fā)ListView+Json+異步網(wǎng)絡(luò)圖片加載+滾動(dòng)翻頁(yè)的例子(圖片能緩存,圖片不錯(cuò)亂) 的相關(guān)資料,需要的朋友可以參考下2016-01-01
深入解析Android中View創(chuàng)建的全過(guò)程
這篇文章主要給大家深入的解析了關(guān)于Android中View創(chuàng)建的全過(guò)程,文中介紹的非常詳細(xì),相信對(duì)大家會(huì)有一定的參考借鑒,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-03-03
Android設(shè)備adb連接后顯示device unauthorized解決方案
這篇文章主要為大家介紹了Android設(shè)備adb連接后顯示device unauthorized解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Android 一個(gè)日歷控件的實(shí)現(xiàn)代碼
本篇文章主要介紹了Android 一個(gè)日歷控件的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05

