想在EditText和TextView控件中随时插入手机本地图片,主要借助于android提供的两个类ImageSpan和SpannableString。如,在EditText中插入图片,分为3步:
1、扫描手机,选择图片:
Intent的Type设置为image/*表示任意格式的图片

    private void choosePictureFromGallery() {        Intent intent = new Intent(Intent.ACTION_PICK);        intent.setType("image/*");        startActivityForResult(intent, CHOOSEPICTUREFROMGALLERY);    }

2、重写Activity的onActivityResult()方法:

  case CHOOSEPICTUREFROMGALLERY:                if (data != null) { Uri uri_picture = data.getData(); ContentResolver resolver = CreateNewDiaryActivity.this.getContentResolver(); Cursor cursor = resolver.query(uri_picture, null, null, null, MediaStore.Images.Media.DATE_MODIFIED); cursor.moveToFirst(); int idx = cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA); picturePath = cursor.getString(idx); Bitmap bitmap = BitmapFactory.decodeFile(picturePath); if (bitmap != null) { SpannableString pictureString = getBitmapMime(bitmap, uri_picture); insertPictureToEditText(pictureString); }                    cursor.close();

3、注意到插入图片用到了两个方法getBitmapMime()和insertPictureToEditText():

private SpannableString getBitmapMime(Bitmap bitmap, Uri uri) {        String path = uri.getPath();        SpannableString ss = new SpannableString(path);        ImageSpan span = new ImageSpan(CreateNewDiaryActivity.this, bitmap);        ss.setSpan(span, 0, path.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        return ss;    }

方法getBitmapMime作用是将插入的图片以ImageSpan表示,并替换掉uri.getPath,放入到SpannableString中,此时图片作为SpannableString字符串返回。

 private void insertPictureToEditText(SpannableString ss) {        Editable et = et_content.getText();        int start = et_content.getSelectionStart();        et.insert(start, ss);        et_content.setText(et);        contentPictureStart = start;        contentPictureEnd = start + ss.length();        et_content.setSelection(start + ss.length());        et_content.setFocusable(true);        et_content.setFocusableInTouchMode(true);    }

方法insertPictureToEditText,首先创建EditText的Editale对象,将SpannableString插入到EditText的编辑位置,插入结束后修改EditText的编辑位置,至此,图片成功插入到文字中。
Android EditText和TextView图文混排_第1张图片

在TextView中插入图片也是一样的道理:

   Bitmap bitmap = ImageProcess.resizeBitmap(diary_picPath, 100, 100);            ImageSpan imageSpan = new ImageSpan(mContext, bitmap);            SpannableString spannableString = new SpannableString("pic");            spannableString.setSpan(imageSpan, 0, spannableString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);            picture_tv.setText(spannableString);

更多相关文章

  1. android强大的图片下载和缓存库Picasso
  2. Android如何实现5.0以上图片沉浸式状态栏
  3. 安卓 WebView加载本地图片时居中显示
  4. Android Studio 中方法数65536 或超过64K的解决方案
  5. Android SDK使用迅雷下载方法
  6. Android应用程序启动时发生AndroidRuntime : ClassNotFoundExcep
  7. Android的Activity的launchMode与onActivityResult方法的关系
  8. Android DrawerLayout和NavigationView 的使用方法

随机推荐

  1. Android(安卓)CheckBox example
  2. Android实现DES对字符串加密
  3. Android之拖拉功能
  4. Android安装使用过程
  5. Android(安卓)SDK 历史版本
  6. android ndk 常用宏定义
  7. android -- 小功能 手势操作GestureDetec
  8. android 实现序列化 浅析一
  9. Android能发音的生词本
  10. Android(安卓)Liftcycle