【Android】图文混排
2014年11月22日23:20:36
Android 中图文混排的方法
安卓开发课程设计中需要用到图文混排,这里为了方便保存,尽量希望能够在 EditText中插入图片。根据网上的资料,可以使用 SpannableString和 ImageSpan 在 EditText 中插入图片。
为了充分了解其中的过程,这里做一个分析笔记。
一、已经成功的方案
使用 Intent 调用系统自带的 Gallery 应用获得一个照片,进行解析插入操作。
1 Uri originalUri = intent.getData(); 2 Bitmap originalBitmap = BitmapFactory.decodeStream(resolver.openInputStream(originalUri));
这一段中首先从 Intent 中获得了 原始的 Uri 路径,然后使用 BitmapFactory.decodeStream方法解析了这个 Uri。
Uri
Web 上可用的每种资源(HTML文档、图像、视频片段、程序等)通过一个资源标识符(Universal Resource Identifier,URI)进行定位。
Android 上的 Uri 由以下三部分组成:"content://"、数据的路径,标志 ID(可选)
1 private SpannableString getBitMapMime(Bitmap Pic, Uri uri){ 2 String path = uri.getPath(); 3 SpannableString spanStr = new SpannableString(path); 4 ImageSpan span = new ImageSpan(this, Pic); 5 spanStr.setSpan(span, 0, path.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 6 return spanStr; 7 }
函数解析:
此函数用于建立一个 SpannableString,传入的参数是一个 Pic 和一个 Uri
SpannableString
构造方式
SpannableString SpanStr = new SpannableString("string");
其中的 ”string “可以是任意字符串。
ImageSpan
将一个Bitmap 转化成一个 ImageSpan,这样可以替换 SpannableString 中的相应文字,比如 String。