发布内容界面添加多张图片。可实现多张图片加载和删除功能
点击添加图片功能放在附件zip包里面,把包解压放入项目中,成library就可以
添加自定义布局:
<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" />
自定义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); } }
发布界面代码功能:
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(); } } }
适配器 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; } }
适配器布局文件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="添加图片" android:textSize="12sp" android:layout_marginTop="5dp" android:textColor="#c6c6c6"/> </LinearLayout> </RelativeLayout>