Get pictures from albums, delete and add multiple pictures

Add multiple pictures in the post content interface. Can realize the function of loading and deleting multiple pictures

Click the add picture function to put it in the attached zip package, unzip the package and put it into the project, and you can make it into a library.

 Add custom layout:

 

<com.xxx.MyGridView
        android:id="@+id/gv_imgs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:horizontalSpacing="5dp"
        android:numColumns="4"
        android:verticalSpacing="5dp" />

 Customize myGridview.java:

 

 

public class MyGridView extends GridView {
    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyGridView(Context context) {
        super(context);
    }

    public MyGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        int expandSpec = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

 

 

Publish interface code function:

 

MyGridView gv_imgs;
    private ImageAdapter mAdapter;
    private List<String> mList = new ArrayList<>();



 mAdapter = new ImageAdapter(mList, this);
        mAdapter.setCallback (new IDeletePicCallback () {
            @Override
            public void callBack(int position) {
                mList.remove(position);
            }
        });
        gv_imgs.setAdapter(mAdapter);

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK) {
            return;
        }
        if (requestCode == REQUEST_IMAGE) {
            List<String> list = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
            if (list != null && list.size() >= 0) {
                mList.addAll(list);
                mAdapter.notifyDataSetChanged();
            }
        }
    }
 

   Adapter ImageAdapter.java:

 

public class ImageAdapter extends BaseAdapter {
    private List<String> list;
    private Context context;
    private IDeletePicCallback callback;

    public void setCallback(IDeletePicCallback callback) {
        this.callback = callback;
    }

    public ImageAdapter(List<String> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        if (list == null || list.size() <= 0) {
            return 1;
        } else {
            if (list.size() >= 9) {
                return 9;
            } else {
                return list.size() + 1;
            }
        }
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.item_pic_add, parent, false);
        }
        ImageView iv_del = ViewHolder.get(convertView, R.id.iv_item_del);
        LinearLayout iv_add = ViewHolder.get(convertView, R.id.iv_item_add);
        final ImageView iv_pic = ViewHolder.get(convertView, R.id.iv_item_pic);
        if (list.size() >= 9 && position == 8) {
            iv_add.setVisibility(View.GONE);
            iv_del.setVisibility(View.VISIBLE);
            iv_pic.setVisibility(View.VISIBLE);
            Glide.with(context).load(list.get(position)).diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop().into(iv_pic);
        } else {
            if (position == list.size()) {
                iv_add.setVisibility(View.VISIBLE);
                iv_del.setVisibility(View.GONE);
                iv_pic.setVisibility(View.GONE);
            } else {
                iv_add.setVisibility(View.GONE);
                iv_del.setVisibility(View.VISIBLE);
                iv_pic.setVisibility(View.VISIBLE);
                Glide.with(context).load(list.get(position)).diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop().into(iv_pic);
            }
        }

        iv_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context,"5555",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(context, MultiImageSelectorActivity.class);
                intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, 9 - list.size());
                ((Activity) context).startActivityForResult(intent, REQUEST_IMAGE);
            }
        });
        final int pos = position;
        iv_del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (callback != null) {
                    callback.callBack(pos);
                }
                notifyDataSetChanged();
            }
        });

        iv_pic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context, ImagePagerActivity.class);
                intent.putExtra(ImagePagerActivity.EXTRA_IMAGE_INDEX, pos);
//                ArrayList<String> list = new ArrayList<String>();
//                list.add("file://" + img.path);
                intent.putStringArrayListExtra(ImagePagerActivity.EXTRA_IMAGE_URLS, (ArrayList<String>) list);
                context.startActivity(intent);
            }
        });

        return convertView;
    }

}

Adapter layout file item_pic_add.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#fff"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv_item_pic"
        android:layout_marginTop="15dp"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:background="#eeede9"
        android:scaleType="centerCrop"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <RelativeLayout
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginLeft="5dp">
    <ImageView
        android:id="@+id/iv_item_del"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_alignParentRight="true"

        android:src="@drawable/img_delete" />
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/iv_item_add"
        android:layout_marginTop="10dp"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:orientation="vertical"
        android:gravity="center"
        android:scaleType="centerCrop"

        android:background="#f2f2f2"
        android:visibility="gone">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitXY"
            android:src="@drawable/img_photo_add"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Add picture"
            android:textSize="12sp"
            android:layout_marginTop="5dp"
            android:textColor="#c6c6c6"/>
    </LinearLayout>


</RelativeLayout>

 

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326105593&siteId=291194637