androidUI设计之旅 ----TextView02

今天我们主要讲解的是TextView里面显示图片及图片链接的。首先让我们看一下实现效果吧。

步骤:1.设置一个TextView控件

      3.通过charsequence获取可编辑字符串

      4.通过 textview.setText(charsequence)方法设置空间显示内容。

      5.解析出来的image文件名字,通过反射取得R.java里面对应的id值。

      6.设置鼠标事件:setMovmenMothod方法。

布局文件:mian.xml

  <TextView
        android:id="@+id/textview1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#FFF"
        android:layout_margin="10dp" />
    


主Activity:AndroidTextview2Activity.java

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		textView = (TextView) findViewById(R.id.textview1);
		String html = "图像1<img src='image1'/>图像2<img src='image2'/>图像3<img src='image3'/>"
				+ "图像4<a href='http://www.baidu.com'><img src='image4'/></a>图像5<img src='image5'/>";
		CharSequence charSequence = Html.fromHtml(html, new ImageGetter() {

			@Override
			public Drawable getDrawable(String source) {
				// TODO Auto-generated method stub

				Drawable drawable;
				try {
					drawable = getResources().getDrawable(
							getResourceById(source));
					if (source.equals("图片3")) {
						drawable.setBounds(0, 0,
								drawable.getIntrinsicWidth() / 2,
								drawable.getIntrinsicHeight() / 2);
					} else {
						drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
								drawable.getIntrinsicHeight());
					}
					return drawable;
				} catch (NotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				return null;
			}
		}, null);
		textView.setText(charSequence);
		textView.setMovementMethod(LinkMovementMethod.getInstance());
	}


//通过反射的方法后的图片id

	public int getResourceById(String name) throws Exception, Exception {

		Field field = R.drawable.class.getField(name);
		return Integer.parseInt(field.get(null).toString());

	}


 

 

 

你可能感兴趣的:(androidUI设计之旅 ----TextView02)