实现从相册中选择图片回显问题可以删除
来源:互联网 发布:团伙研发作弊软件 编辑:程序博客网 时间:2024/06/16 04:06
最近在做一个退款模块,要求上传凭证,但是凭证上可以删除的。
就是图片这种效果
<GridView android:id="@+id/gv_apply_refund_pics" android:layout_width="match_parent" android:layout_height="108dp" android:background="@color/white" android:cacheColorHint="#00000000" android:checked="false" android:clickable="false" android:columnWidth="108dp" android:focusable="false" android:focusableInTouchMode="false" android:gravity="center" android:horizontalSpacing="1.0dp" android:listSelector="#00000000" android:numColumns="auto_fit" android:scrollbars="none" android:stretchMode="spacingWidthUniform" android:verticalSpacing="1.0dip"></GridView>
首先将项目的资源图片插入到图片集合里面
可以先存一下临时地址,之后删除这个地址,楼主没有做这个操作
private void addFirstPic() { ImageView imageView = new ImageView(this); imageView.setBackgroundResource(R.drawable.pic_shangchuan); Bitmap bm = ((BitmapDrawable) imageView.getBackground()).getBitmap(); File f = new File("/sdcard/", System.currentTimeMillis() + "add.pic"); if (f.exists()) { f.delete(); } try { FileOutputStream out = new FileOutputStream(f); bm.compress(Bitmap.CompressFormat.PNG, 90, out); out.flush(); out.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } pic.add(f.getAbsolutePath());}
gv_pics.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, final int position, long l) { if (position == pic.size() - 1) { Intent intent = new Intent(ApplyRefundActivity.this, ImageGridActivity.class); //实现跳转 startActivityForResult(intent, CHOOSEPHOTO_REQUEST_CODE); } ImageView iv_pic_del = (ImageView) view.findViewById(R.id.iv_pic_del); iv_pic_del.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pic.remove(position); picAdapter.notifyDataSetChanged(); if (pic.size() == 0) { addFirstPic(); } picAdapter.notifyDataSetChanged(); } }); }});
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);// //onActivityResult里一行代码回调 if (data != null) { if (resultCode == ImagePicker.RESULT_CODE_ITEMS) { if (data != null && requestCode == CHOOSEPHOTO_REQUEST_CODE) { ArrayList<ImageItem> mImages = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS); pic.clear(); for (int i = 0; i < mImages.size(); i++) { pic.add(mImages.get(i).path); } addFirstPic(); picAdapter.notifyDataSetChanged(); } else { Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show(); } } } }
public class PicSelectAdapter extends BaseAdapter { private Activity mActivity; private List<String> images; private int clickItemIndex = -1;//根据这个变量来辨识选中的current值 public PicSelectAdapter(Activity activity, List<String> mImages) { mActivity = activity; images = mImages; } @Override public int getCount() { return images.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(final int i, View view, ViewGroup viewGroup) { final PicViewHolder holder; if (view == null) { view = View.inflate(mActivity, R.layout.item_pic, null); holder = new PicViewHolder(view); view.setTag(holder); } else { holder = (PicViewHolder) view.getTag(); } Bitmap bitMBitmap = getSmallBitmap(images.get(i)); holder.iv_pic.setImageBitmap(bitMBitmap);//为ImageView设置图片资源
//因为上传凭证只有三张所以进行了一下限制 if (images.size() == 4) { if ((images.size() - 1) == i) { holder.iv_pic_del.setVisibility(View.GONE); holder.iv_pic.setVisibility(View.GONE); } else { holder.iv_pic.setVisibility(View.VISIBLE); holder.iv_pic_del.setVisibility(View.VISIBLE); } } else if (images.size() == 1) { holder.iv_pic.setVisibility(View.VISIBLE); holder.iv_pic_del.setVisibility(View.GONE); } else { if ((images.size() - 1) == i) { holder.iv_pic_del.setVisibility(View.GONE); holder.iv_pic.setVisibility(View.VISIBLE); } else { holder.iv_pic.setVisibility(View.VISIBLE); holder.iv_pic_del.setVisibility(View.VISIBLE); } } if (holder.iv_pic_del.getVisibility() == View.VISIBLE) { if (i == clickItemIndex) { holder.iv_pic_del.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { images.remove(clickItemIndex); if (images.size() == 0) { ImageView imageView = new ImageView(mActivity); imageView.setBackgroundResource(R.drawable.pic_shangchuan); Bitmap bm = ((BitmapDrawable) imageView.getBackground()).getBitmap(); File f = new File("/sdcard/WeiMiLife/", "add.pic"); if (f.exists()) { f.delete(); } try { FileOutputStream out = new FileOutputStream(f); bm.compress(Bitmap.CompressFormat.PNG, 90, out); out.flush(); out.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } images.add(f.getAbsolutePath()); } notifyDataSetChanged(); } }); } } return view; } // 根据路径获得图片并压缩,返回bitmap用于显示 public static Bitmap getSmallBitmap(String filePath) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, 1080, 1920); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath, options); } //计算图片的缩放值 public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height / (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; } return inSampleSize; } class PicViewHolder { private final ImageView iv_pic; private final ImageView iv_pic_del; public PicViewHolder(View view) { iv_pic = (ImageView) view.findViewById(R.id.iv_pic); iv_pic_del = (ImageView) view.findViewById(R.id.iv_pic_del); } }}
阅读全文
0 0
- 实现从相册中选择图片回显问题可以删除
- 从相册中选择图片
- 小米手机从相册选择图片问题
- 从相册中选择多张图片
- android---从相册中选择图片
- 从相册选择图片
- Android 实现从相册选择图片,拍照选择图片
- ionic中实现从相册中选择图片并一次上传多张图片
- 从相册选择图片回传
- 拍照上传图片与从相册中选择图片上传
- Android 多媒体应用:从相册选择照片显示(解决相册中图片显示不出来的问题)
- android实现发送Email功能(从相册中选择图片作为附件)
- Android 从相册选择图片
- 利用NSURLSession从相册中选择图片并上传
- 从相册中选择图片、自定义View(一)
- android从系统相册中选择一张图片
- Android-从相册中选择图片显示出来
- Android从相册中选择图片显示出来
- 灰度共生矩阵
- Nginx 四种分配方式
- spring cloud zuul 配置请求并发
- ES6入门,看这篇就够了
- 如何使用Java解决最大流
- 实现从相册中选择图片回显问题可以删除
- 10027---kafka集群环境搭建
- SpringCloud(2):架构流程、Eureka配置、代码
- 2017/12/21 第十二天培训
- Asp.net MVC WebApi项目的自动接口文档及测试功能打开方法
- Pycharm如何添加第三方库和插件
- 使用Vue构建Ionic混合APP系列教程(四):数据存储
- C实现银行家算法(避免死锁)
- [数学公式]常用数学公式(一)——高等数学