相册选取图片插入到EditText中,实现图文混排

1.首先用到了 ImagePicker,上github搜索仿微信图片选择就能找到

2.导入ImagePicker的包 compile 'com.squareup.picasso:picasso:2.5.2'

3.我是用是 picasso加载图片,github上imagePicker的demo里分别使用了三种加载图片的第三方,glide,picasso,imageload,我使用的picasso
compile 'com.squareup.picasso:picasso:2.5.2'

4.在application初始化

ImagePicker imagePicker = ImagePicker.getInstance();
imagePicker.setImageLoader(new PicassoImageLoader());   //设置图片加载器
imagePicker.setShowCamera(true);  //显示拍照按钮
imagePicker.setCrop(true);        //允许裁剪(单选才有效)
imagePicker.setSaveRectangle(true); //是否按矩形区域保存
imagePicker.setSelectLimit(9);    //选中数量限制
imagePicker.setStyle(CropImageView.Style.RECTANGLE);  //裁剪框的形状
imagePicker.setFocusWidth(800);   //裁剪框的宽度。单位像素(圆形自动取宽高最小值)
imagePicker.setFocusHeight(800);  //裁剪框的高度。单位像素(圆形自动取宽高最小值)
imagePicker.setOutPutX(1000);//保存文件的宽度。单位像素
imagePicker.setOutPutY(1000);//保存文件的高度。单位像素

创建PicassoImageLoader,下面会用到
继承ImageLoader
@Override
public void displayImage(Activity activity, String path, ImageView imageView, int width, int height) {
    Picasso.with(activity)
            .load(Uri.fromFile(new File(path)))
            .placeholder(R.mipmap.default_image)
            .error(R.mipmap.default_image)
            .resize(width, height)
            .centerInside()
            .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
            .into(imageView);
}

@Override
public void clearMemoryCache() {
    //这里是清除缓存的方法,根据需要自己实现
}

6.在Activity中
editText = (EditText) findViewById(R.id.edit);
gridView = (GridView) findViewById(R.id.grid);
imagePicker = ImagePicker.getInstance();
imagePicker.setImageLoader(new PicassoImageLoader());

制造点击事件跳转,
ImageGridActivity这个类是导入的PmagePicker的包里面封装好的,能跳转到相册实现多张图片选取

public void BtIntent(View v) {
    Intent intent = new Intent(this, ImageGridActivity.class);
    startActivityForResult(intent, 0);
}

//重写onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {
        if (data != null && requestCode == 0) {
            ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);
            //可以用gridView展示选择的图片
            // MyAdapter adapter = new MyAdapter(images,MainActivity.this);
            //gridView.setAdapter(adapter);
           for (int i = 0; i < images.size(); i++) {
                //循环拿到路径
               String path = images.get(i).path;
                insertEdit(path);
            }
        } else {
            Toast.makeText(this, "没有数据", Toast.LENGTH_SHORT).show();
        }
    }
}


//实现图片插入到EditeText中
public void insertEdit(String path) {
        Bitmap loadedImage = BitmapFactory.decodeFile(path);
        loadedImage = Bitmap.createBitmap(loadedImage, 0, 0, loadedImage.getWidth(), loadedImage.getHeight(), new Matrix(), true);
        ImageSpan imageSpan = new ImageSpan(MainActivity.this, loadedImage);
        SpannableString spannableString = new SpannableString(path);
        spannableString.setSpan(imageSpan, 0, path.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 将选择的图片追加到EditText中光标所在位置
        int index = editText.getSelectionStart();
// 获取光标所在位置
        Editable edit_text = editText.getEditableText();
        if (index < 0 || index >= edit_text.length()) {
            edit_text.append(spannableString);
        } else {
            edit_text.insert(index, spannableString);
        }

    }

7.别忘了添加权限
<uses-permission android:name="android.permission.CAMERA" />













  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值