`

TextView显示Html(带有网络图片)

 
阅读更多

 

网路图片加载方法:

1 ImageGetter中判断图片是否已经加载过,如果本地已经存在直接从本地加载

2 图片本地不存在,开启线程加载图片,下载完毕后,重新调用ImageGetter加载图片

 

主要代码:

 1  TextView加载html

		htmlText4 = (TextView) findViewById( R.id.htmlText4);
		Spanned span = Html.fromHtml( htmlStr,imgGetter2,null );
		htmlText4.setText(span);

 2 ImageGetter 使用

 

	//加载网络图片
	ImageGetter imgGetter2 = new Html.ImageGetter() {
        @Override
        public Drawable getDrawable(String source) {//参数为image的src属性
        	Drawable drawable = null; 
			String photoPath = FileUtils.getPhotoImgPath();
			String fileName =  FileUtils.getFileName(source );
			File imageFile = new File(photoPath,fileName);
			
			if(imageFile.exists()){//本地存在直接加载本地图片
	             //获取本地文件返回Drawable
                drawable=Drawable.createFromPath( imageFile.getAbsolutePath());
                //设置图片边界
//                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                drawable.setBounds(0, 0, 500, 500);
                
			}else{//图片没有家再过,则重新加载图片
				loadImage(source);
			}
             return drawable;
        }
	};

 

3 开启线程加载图片 

 

	//加载图片
	private void loadImage(final String imageUrl){
		new Thread(){
			public void run() {
				Bitmap bitmap = ApiClient.getNetBitmap( imageUrl);	
				String photoPath = FileUtils.getPhotoImgPath();
				String fileName =  FileUtils.getFileName(imageUrl );
				try {
					ImageUtils.saveImageToSD(HtmlActivity.this, photoPath+"/"+fileName, bitmap, 100);
				} catch (IOException e) {
					e.printStackTrace();
				}
				handler.sendEmptyMessage(1);
			};
		}.start();
	}

4 图片加载后,重新调用ImageGetter

 

	//加载图片后显示html文字
	private Handler handler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			Spanned span = Html.fromHtml( htmlStr,imgGetter2,null );
			htmlText4.setText(span);
		};
	};

  

5 图片保存到本地的路径 

 

	/**
	 * 得到图片临时存储路径
	 * @return
	 */
	public static  String getPhotoImgPath(){
		String savePath = "";
		// 判断是否挂载了SD卡
		String storageState = Environment
				.getExternalStorageState();
		if (storageState.equals(Environment.MEDIA_MOUNTED)) {
			savePath = Environment
					.getExternalStorageDirectory() 
					+ "/Test/Camera/";// 存放照片的文件夹
			File savedir = new File(savePath);
			if (!savedir.exists()) {
				savedir.mkdirs();
			}
		}
		return savePath;
	}

 

 

分享到:
评论

相关推荐

    android Textview显示带html文本、图片

    通过一些特殊的技术,我们还可以让`TextView`显示HTML格式的文本,甚至嵌入图片。这个主题主要涉及如何利用`TextView`的特性以及第三方库来实现这一功能。 1. **HTML支持** `TextView`默认支持一部分HTML标签,如`...

    TextView加载网络图片HTMLIMG

    5. **使用Webview**:另一种方法是使用WebView控件,它可以完整地解析和显示HTML页面,包括网络图片。但是,Webview比较重,不适合只用来显示简单的HTML片段,且会引入额外的滚动行为,可能影响用户体验。 6. **...

    android TextView异步加载HTML(含图片)

    为了在`TextView` 中显示带有HTML标签和图片的内容,我们需要进行一些额外的处理。标题提到的“android TextView异步加载HTML(含图片)”就是一个解决此类问题的方法。 在描述中,我们看到一行代码 `tv.setText...

    题库类App中比较头疼的公式问题,TextView加载Html,图文混排,Svg图片加载

    1. **TextView加载Html**:在Android中,TextView通常用于显示纯文本,但通过加载Html,我们可以让TextView支持富文本格式,包括内嵌图片、链接、颜色等。使用`Html.fromHtml()`方法可以将Html字符串转换为Spanned...

    Html.fromHtml加载网络图片

    通过以上方式,我们可以利用 `Html.fromHtml()` 结合自定义 `ImageGetter` 实现加载网络图片的功能,从而在TextView中展示富文本内容,提升用户体验。在实际项目中,根据需求可以进一步定制化 `ImageGetter`,比如...

    在TextView中输入图片

    在`Html.fromHtml()`中处理这些标签,TextView就能呈现带有颜色、字体和链接的文本了。 综上所述,在TextView中插入图片涉及的关键技术包括HTML标签的使用、`Html.fromHtml()`方法的调用、ImageGetter接口的实现...

    Android-FlexibleRichTextView可以显示LaTeX图片代码的TextView

    对于图片的显示,`FlexibleRichTextView`支持本地和网络资源,可以方便地插入到文本中。开发者可以通过自定义标签来指定图片的来源、大小以及是否支持点击等交互操作,从而提供丰富的用户体验。 代码的展示部分,`...

    HtmlTextView

    String html = "这是带有图片的文本<img src='image.png'></p>"; textView.setText(Html.fromHtml(html, this, new ImageGetter())); ``` 在`getDrawable()`方法中,你需要根据`source`参数去获取图片,并返回一个`...

    android教程之textview解析带图片的html示例

    在Android开发中,有时我们需要在TextView中展示包含HTML格式的内容,比如带有文本样式、超链接以及图片。本教程将详细讲解如何在Android的TextView中解析并显示带图片的HTML数据。 首先,我们来看一下给定的代码...

    Android的TextView与Html相结合的具体方法

    在Android开发中,有时我们需要在TextView中展示带有丰富格式的内容,如不同的字体颜色、链接以及图片等。这时,我们可以利用Android的TextView与HTML的结合来实现这一需求。下面将详细介绍如何实现这一功能。 首先...

    ios-富文本编辑-textView.zip

    富文本是iOS中用于表示带有样式信息的文本对象,通过`NSAttributedString`类来处理。它可以包含不同的字体、颜色、下划线样式等属性。`NSAttributedStringKey`枚举提供了各种属性键,如`NSFontAttributeName`用于...

    Android中解析html网页示例Demo

    此外,对于图片等多媒体内容,可能需要额外处理,比如使用ImageView加载网络图片,这里可以借助Glide或Picasso这样的库来简化操作。 在Demo中,"PraseHtml"可能是项目的主要代码文件或目录,包含了网络请求、HTML...

    Android平台下的富文本解析器,支持Html和Markdown.rar

    在移动应用开发中,尤其是在社交、阅读、博客等场景,往往需要展示带有格式、链接、图片、颜色等多样性的文本内容。传统的TextView只能显示基本的纯文本,而富文本解析器则可以解析并呈现这些复杂的格式,极大地提升...

    Android开发资料合集--续

    5. TextProgressBar显示文字:TextProgressBar是一种带有进度条的TextView,可以通过设置text属性和progress来显示进度。 6. TextView效果:TextView支持多种显示效果,如字体大小、颜色、对齐方式等,可以通过...

    Android走马灯学校活动界面超链实验报告.docx

    这段代码展示了三个TextView的设置,第一个用于实现走马灯效果,第二个设置中心对齐并带有左右图片,第三个则设置了自动链接,并包含电话、邮件和网址信息。 总之,这个实验提供了全面的Android UI设计和交互实现...

    仿简书富文本编辑器

    3. **Html.fromHtml()**:这是一个内置方法,可以将HTML代码转换为Spanned对象,从而在EditText或TextView中显示HTML格式的文本。这对于导入和导出富文本非常有用。 4. **插件化架构**:为了实现类似简书的丰富功能...

    安卓面试题

    - **xUtils**:提供网络访问、数据库操作等功能。 #### 59. ListView上拉加载 - **监听器**:监听ListView滚动事件。 - **实现**:当滚动到底部时加载更多数据。 #### 60. JSON与XML区别 - **JSON**:轻量级数据...

Global site tag (gtag.js) - Google Analytics