博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在EditText里插入图片,基于图库选择之后
阅读量:5992 次
发布时间:2019-06-20

本文共 2975 字,大约阅读时间需要 9 分钟。

现在在做一个便签,用到记录一下。

View Code
//onActivityResult                 Uri uri=data.getData(); //                通过URI得到图片在系统的路径 //                String[] proj = {MediaStore.Images.Media.DATA}; ////好像是android多媒体数据库的封装接口,具体的看Android文档 //                Cursor cursor = managedQuery(uri, proj, null, null, null); ////按我个人理解 这个是获得用户选择的图片的索引值 //                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); ////将光标移至开头 ,这个很重要,不小心很容易引起越界 //                cursor.moveToFirst(); ////最后根据索引值获取图片路径 //                String path = cursor.getString(column_index);                                 Bitmap pic = null;                 pic = getBitmap(data.getData());                 insertIntoEditText(getBitmapMime(pic, uri));

函数如下

View Code
/**        * 通过路径获取系统图片        * @param uri        * @return */ private Bitmap getBitmap(Uri uri) {
Bitmap pic = null; BitmapFactory.Options op = new BitmapFactory.Options(); op.inJustDecodeBounds = true; Display display = getWindowManager().getDefaultDisplay(); int dw = display.getWidth(); int dh = display.getHeight(); try {
pic = BitmapFactory.decodeStream(getContentResolver() .openInputStream(uri), null, op); } catch (FileNotFoundException e) {
e.printStackTrace(); } int wRatio = (int) Math.ceil(op.outWidth / (float) dw); int hRatio = (int) Math.ceil(op.outHeight / (float) dh); if (wRatio > 1 && hRatio > 1) {
op.inSampleSize = wRatio + hRatio; } op.inJustDecodeBounds = false; try {
pic = BitmapFactory.decodeStream(getContentResolver() .openInputStream(uri), null, op); } catch (FileNotFoundException e) {
e.printStackTrace(); } return pic; } /** * 图片转成SpannableString加到EditText中 * * @param pic * @param uri * @return */ private SpannableString getBitmapMime(Bitmap pic, Uri uri) {
// int imgWidth = pic.getWidth(); // int imgHeight = pic.getHeight(); // float scalew = (float) 40 / imgWidth; // float scaleh = (float) 40 / imgHeight; // Matrix mx = new Matrix(); // mx.setScale(scalew, scaleh); // pic = Bitmap.createBitmap(pic, 0, 0, imgWidth, imgHeight, mx, true); String smile = uri.getPath(); SpannableString ss = new SpannableString(smile); ImageSpan span = new ImageSpan(this, pic); ss.setSpan(span, 0, smile.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return ss; } /** * 这里是重点 */ private void insertIntoEditText(SpannableString ss) {
Editable et = editText_Content.getText();// 先获取Edittext中的内容 int start = editText_Content.getSelectionStart(); et.insert(start, ss);// 设置ss要添加的位置 editText_Content.setText(et);// 把et添加到Edittext中 editText_Content.setSelection(start + ss.length());// 设置Edittext中光标在最后面显示 } }

转载于:https://www.cnblogs.com/helloandroid/articles/2284517.html

你可能感兴趣的文章
[Tailwind] Style Elements on hover and focus with Tailwind’s State Variants
查看>>
关于MongoDB时区问题
查看>>
Java基础-包(package)的声明与访问
查看>>
vue 开发系列(七) 路由配置
查看>>
sklearn机器学习-泰坦尼克号
查看>>
java多线程有哪些实际的应用场景?
查看>>
mybatis源码解读(二)——构建Configuration对象
查看>>
Cordova页面加载外网图片失败,Refused to load the image
查看>>
在storm中运行jar产生模拟数据的时候,遇见的问题
查看>>
asp.net mvc中动作方法的重定向
查看>>
解决svn中文乱码的问题
查看>>
记录一下 ps命令找出线程占用cpu情况
查看>>
Android Studio preview 不显示,程序运行正常
查看>>
漫画解读“跨视图粒度计算”,了解有数分析利器
查看>>
java List<String>的初始化
查看>>
聊聊 API Gateway 和 Netflix Zuul
查看>>
694. Number of Distinct Islands
查看>>
Qt中对QDomDocument和QDomnode的理解
查看>>
小程序实践(十一):showModal的使用
查看>>
汉诺塔-递归实现
查看>>