Android---11---TextView显示图片信息

用带html标签的文本显示图片信息:


import java.lang.reflect.Field;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Html.ImageGetter;
import android.text.method.LinkMovementMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {

	private int getResousId(String name) {
		// TODO Auto-generated method stub
		// 根究资源的ID变量名,获得Field的对象,使用反射机制来实现的
		// Field 是字段 属性,用来存储一个类的属性值
		Field field;
		try {
			// class.getField(String name)
			// 用于返回一个指定名称的属性,但是这个属性必须是公有的,这个属性可以在父类中定义。
			// 如果是私有或者是保护属性,则会抛出异常提示找不到这个属性
			field = R.drawable.class.getField(name);
			// 取得并返回资源的id的字段(静态变量)的值,使用反射机制
			return Integer.parseInt(field.get(null).toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return 0;

	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView textView = (TextView) findViewById(R.id.textview);
		textView.setTextColor(Color.BLUE);
		String html = "图像1 <img src='image01'/>" + "\n"
				+ "图像2<img src='image02' />" + "\n";
		html += "图像3 <a href='http://www.baidu.com'><img src='image03' /></a>";

		CharSequence charSequence = Html.fromHtml(html, new ImageGetter() {

			@Override
			/*
			 * 获得系统的资源的信息,如图片信息 该方法 在此程序中会使用三次 因为是三张图 (non-Javadoc)
			 * 
			 * @see android.text.Html.ImageGetter#getDrawable(java.lang.String)
			 */
			public Drawable getDrawable(String source) {
				// TODO Auto-generated method stub
				// 得到系统资源的信息
				Drawable drawable = getResources().getDrawable(
						getResousId(source));

				// image03按照50%的比例缩放
				if (source.equals("image03")) {
					// setBounds 就是用来设置属性值得 左 上 右 下
					// getIntrinsicWidth() 得到实际宽度
					drawable.setBounds(0, 0, drawable.getIntrinsicWidth() / 2,
							drawable.getIntrinsicHeight() / 2);
				} else {
					drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
							drawable.getIntrinsicHeight());
				}

				return drawable;
			}
		}, null);

		textView.setText(charSequence);
		// 点击响应
		textView.setMovementMethod(LinkMovementMethod.getInstance());
	}
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。