Android TextView使用HTML处理字体样式、显示图片等
来源:互联网 发布:手机做题软件 编辑:程序博客网 时间:2024/06/05 18:57
项目上有个需求:后台想直接控制文字的格式样式和添加图片。像网页一样修改好了整个网页通过接口给我,让我显示在消息提示框里。
怎么用TextView控件显示带有格式的文字,可否使用Html布局?查了下Android 帮助文档,其提供了android.text.Html类和Html.ImageGetter、Html.TagHandler接口。
其实本不打算写这篇博文的,但看到网络上关于此的文章,找了好多资料,文本显示很简单,就是这个图就是加载不出来
我把代码贴一下:
html = "<html><head><title>TextView使用HTML</title></head><body><p><strong>强调</strong></p><p><em>斜体</em></p>"+ "<p><a href=\"http://www.dreamdu.com/xhtml/\">超链接HTML入门</a>学习HTML!</p><p><font color=\"#aabb00\">颜色1"+ "</p><p><font color=\"#00bbaa\">颜色2</p><h1>标题1</h1><h3>标题2</h3><h6>标题3</h6><p>大于>小于<</p><p>"+ "下面是网络图片</p><img src=\"http://avatar.csdn.net/0/3/8/1_zhang957411207.jpg\"/></body></html>";text = (TextView) findViewById(R.id.text_html);text.setMovementMethod(ScrollingMovementMethod.getInstance());// 滚动mImageGetter = new NetworkImageGetter(); text.setText(Html.fromHtml(html,mImageGetter , null ));如果不显示图这样就可以了:
text.setText(Html.fromHtml(html));
图片需要第二个参数
API: Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler);
/** * 网络图片 * @author Susie */ private final class NetworkImageGetter implements Html.ImageGetter{ @Override public Drawable getDrawable(String source) { Drawable drawable = null; // 封装路径 File file = new File(Environment.getExternalStorageDirectory(), picName); // 判断是否以http开头 if(source.startsWith("http")) { // 判断路径是否存在 if(file.exists()) { // 存在即获取drawable drawable = Drawable.createFromPath(file.getAbsolutePath()); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); } else { // 不存在即开启异步任务加载网络图片 AsyncLoadNetworkPic networkPic = new AsyncLoadNetworkPic(); networkPic.execute(source); } } return drawable; } }
图片本地的名字:
/**网络图片name*/ private String picName = "networkPic.jpg";先加载本地,如果本地没有就开始下载。
异步下载:
/** * 加载网络图片异步类 * @author Susie */ private final class AsyncLoadNetworkPic extends AsyncTask<String, Integer, Void>{ @Override protected Void doInBackground(String... params) { // 加载网络图片 loadNetPic(params); return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); // 当执行完成后再次为其设置一次 text.setText(Html.fromHtml(html, mImageGetter, null)); } /**加载网络图片*/ private void loadNetPic(String... params) { String path = params[0]; File file = new File(Environment.getExternalStorageDirectory(), picName); InputStream in = null; FileOutputStream out = null; try { URL url = new URL(path); HttpURLConnection connUrl = (HttpURLConnection) url.openConnection(); connUrl.setConnectTimeout(5000); connUrl.setRequestMethod("GET"); if(connUrl.getResponseCode() == 200) { in = connUrl.getInputStream(); out = new FileOutputStream(file); byte[] buffer = new byte[1024]; int len; while((len = in.read(buffer))!= -1){ out.write(buffer, 0, len); } } else { Log.e("123", connUrl.getResponseCode() + ""); } } catch (Exception e) { e.printStackTrace(); } finally { if(in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if(out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }成功加载:
希望能帮到你。。。。。。
1 0
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- Android TextView使用HTML处理字体样式、显示图片等
- 让人感觉点击到的圆角按钮
- 简单实现ButterKnife的注解功能
- UIWebView - 4
- 蓝桥杯:K好数
- 本地ie版本大于7.0,MsHtml中get_userAgent获取UA为MSIE7
- Android TextView使用HTML处理字体样式、显示图片等
- windows账户密码忘记解决办法
- ios关于用xib创建的cell 自动返回cell的高度问题!
- 使用Java代码在应用层获取Android系统属性
- leetcode.147. Insertion Sort List
- 深度学习笔记二
- Attempt to present <UINavigationController: 0x7fdf1b100e00> on <ViewController:0x....>
- 移动端开发的一些问题
- 教程:SQL Server Management Studio