Android 上传图片实现图片加减

                                    Android 上传图片实现图片加减

 

1.直接上代码。首先是布局文件我是利用Gridview,当然你们可以利用recyclerview

<GridView
                        android:layout_marginRight="@dimen/dp_margin_14"
                        android:layout_marginBottom="@dimen/dp_margin_14"
                        android:id="@+id/gv_view1"
                        android:layout_marginLeft="@dimen/dp_margin_14"
                        android:layout_marginTop="@dimen/dp_margin_7"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content" />

2.然后在MianActivity初始化控件,写适配器

package com.kaitong.cn.projictceshi1;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.lcw.library.imagepicker.ImagePicker;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private GridView gridView;
    private ArrayList<String> mPicList = new ArrayList<>(); //上传的图片凭证的数据源
    private GridViewImagAdapter mGridViewAddImgAdapter;
    private ArrayList<String> imagePaths=new ArrayList<>();
    private static final int REQUEST_SELECT_IMAGES_CODE = 0x01;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gridView = findViewById(R.id.gridView);
        mGridViewAddImgAdapter = new GridViewImagAdapter(MainActivity.this, mPicList);
        gridView.setNumColumns(3);
        gridView.setAdapter(mGridViewAddImgAdapter);
        mGridViewAddImgAdapter.setmOnItemClickListener(new GridViewImagAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {

                if (R.id.pic_iv == view.getId()) {
                    //如果“增加按钮形状的”图片的位置是最后一张,且添加了的图片的数量不超过9张,才能点击
                    if (mPicList.size() == 3) {
                        Toast.makeText(MainActivity.this,"最多上传3张照片!",Toast.LENGTH_SHORT).show();
                    } else if ((position < mPicList.size())){//上传图片点击
                        Toast.makeText(MainActivity.this,"点击选择过后的图片",Toast.LENGTH_SHORT).show();
                    } else {
                        pic();
                    }
                } else if (R.id.img_del == view.getId()) {
                    mPicList.remove(position);
                    mGridViewAddImgAdapter.notifyDataSetChanged();
                }
            }
        });

    }
    //调用相机和相册
    private void pic() {
        ImagePicker.getInstance()
                .setTitle("标题")//设置标题
                .showCamera(true)//设置是否显示拍照按钮
                .showImage(true)//设置是否展示图片
                .showVideo(false)//设置是否展示视频
                .setSingleType(true)//设置图片视频不能同时选择
                .setMaxCount(3)//设置最大选择图片数目(默认为1,单选)
                .setImageLoader(new GlideLoader())//设置自定义图片加载器
                .start(MainActivity.this, REQUEST_SELECT_IMAGES_CODE);//REQEST_SELECT_IMAGES_CODE为Intent调用的requestCode

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == REQUEST_SELECT_IMAGES_CODE && resultCode == RESULT_OK) {
            imagePaths = data.getStringArrayListExtra(ImagePicker.EXTRA_SELECT_IMAGES);
            for (int i = 0 ;i <imagePaths.size(); i++){
                mPicList.add(imagePaths.get(i));
            }
            mGridViewAddImgAdapter.notifyDataSetChanged();
        }
    }


}

3.适配器

package com.kaitong.cn.projictceshi1;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.Toast;

import com.bumptech.glide.Glide;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

public class GridViewImagAdapter extends BaseAdapter {
    private Context mContext;
    private List<String> mList;
    private LayoutInflater inflater;
    private OnItemClickListener mOnItemClickListener;


    public void setmOnItemClickListener(GridViewImagAdapter.OnItemClickListener mOnItemClickListener) {
        this.mOnItemClickListener = mOnItemClickListener;
    }

    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }

    public GridViewImagAdapter(Context mContext, List<String> mList) {
        this.mContext = mContext;
        this.mList = mList;
        inflater = LayoutInflater.from(mContext);
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        //return mList.size() + 1;//因为最后多了一个添加图片的ImageView
        int count = mList == null ? 1 : mList.size() + 1;
        if (count > 3) {
            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(final int position, View convertView, ViewGroup parent) {
        convertView = inflater.inflate(R.layout.load_item_pic, parent, false);
        final ImageView iv = (ImageView) convertView.findViewById(R.id.pic_iv);
        final ImageView ivdel = (ImageView) convertView.findViewById(R.id.img_del);
        if (mOnItemClickListener != null) {
            iv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mOnItemClickListener.onItemClick(iv, position);
                }
            });
        }
        if (mOnItemClickListener != null) {
            ivdel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mOnItemClickListener.onItemClick(ivdel, position);
                }
            });
        }

        if (position < mList.size()) {
            //代表+号之前的需要正常显示图片
            String picUrl = mList.get(position); //图片路径
            Toast.makeText(mContext,"picUrl:"+picUrl,Toast.LENGTH_SHORT).show();
            //GlideUtil.loaderImg(mContext, iv, picUrl);
            //Glide.with(mContext).load(picUrl).into(iv);
            /*Bitmap bm= BitmapFactory.decodeResource(mContext.getResources(),picUrl);
            Bitmap bitmap = RoundImageView.getCroppedBitmap(bm, 400);
            iv.setImageBitmap(bitmap);*/
            iv.setImageBitmap(getLoacalBitmap(picUrl));
            ivdel.setVisibility(View.VISIBLE);
        } else {
            ivdel.setVisibility(View.GONE);
            iv.setImageResource(R.drawable.zhanwei);//最后一个显示加号图片
        }
        return convertView;
    }

    public static Bitmap getLoacalBitmap(String url) {
        try {
            FileInputStream fis = new FileInputStream(url);
            return BitmapFactory.decodeStream(fis);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }
}

4.适配器里面的Itm布局(布局自己优化)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants">
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <ImageView
            android:src="@drawable/zhanwei"
            android:layout_marginTop="21dp"
            android:id="@+id/pic_iv"
            android:layout_width="105dp"
            android:layout_height="105dp"
            android:scaleType="centerCrop"
            />
        <ImageView
            android:layout_marginTop="14dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:id="@+id/img_del"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/zhanwei_chahao"
            android:clickable="false"
            android:focusable="false"
            />
    </RelativeLayout>

</RelativeLayout>

5.图片上传到服务器那块我还没有写完,就不写了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值