packagecom.study.android_textview2;importjava.lang.reflect.Field;importandroid.R.drawable;importandroid.os.Bundle;importandroid.app.Activity;importandroid.graphics.Color;importandroid.graphics.drawable.Drawable;importandroid.text.Html;importandroid.text.Html.ImageGetter;importandroid.text.method.LinkMovementMethod;importandroid.view.Menu;importandroid.widget.TextView;public class MainActivity extendsActivity {public intgetResourceId(String name){try{//根据资源的ID的变量名获得Field的对象,使用反射机制实现的
Field field = R.drawable.class.getField(name);//取得并返回资源的id的字段(静态变量)的值,使用反射机制
return Integer.parseInt(field.get(null).toString());
}catch(Exception e) {
e.printStackTrace();
}return 0;
}
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView= (TextView)this.findViewById(R.id.textview);
textView.setTextColor(Color.BLACK);
textView.setBackgroundColor(Color.WHITE);
textView.setTextSize(20);
String html= "图像1图像2
图像3
";
CharSequence charSequence= Html.fromHtml(html, newImageGetter() {
@OverridepublicDrawable getDrawable(String source) {//获得系统资源的信息,比如图片信息
Drawable drawable =getResources().getDrawable(getResourceId(source));//处理第三个图片文件按照50%的比例进行压缩
if (source.equals("image3")) {
drawable.setBounds(0, 0, drawable.getIntrinsicWidth()/2, drawable.getIntrinsicHeight()/2);
}else{
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}returndrawable;
}
},null);
textView.setText(charSequence);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
@Overridepublic booleanonCreateOptionsMenu(Menu menu) {//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);return true;
}
}