Android中的一些基础知识(三)
最近在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看。
在TextView中显示图像(使用< img>标签)
在TextView中显示图片的方法有许多种,常见的有通过View.setBackground()来设置背景、在onDraw方法中绘制。这里我讲一下用< img>标签来设置图像。
TextView可以通过富文本标签来显示富文本信息,这种标签类似于HTML标签,TextView只支持有限的几种显示富文本的方式。在这里,我们通过 Html.fromHtml方法将这些资源转换成CharSequence,最后同text.setText()方法来显示图像。不多说了,直接上代码:
布局文件:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:orientation="vertical"> 5 <TextView 6 android:id="@+id/tv_text" 7 android:layout_width="wrap_content" 8 android:layout_height="wrap_content" 9 android:layout_gravity="center" 10 android:text="text" 11 android:textSize="30dp"/> 12 <Button 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:text="show Image" 16 android:textSize="25dp" 17 android:layout_gravity="center" 18 android:onClick="click"/> 19 </LinearLayout>
Java代码:
1 private TextView tv_text; 2 private CharSequence charSequence; 3 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.textview_layout); 8 tv_text= (TextView) findViewById(R.id.tv_text); 9 charSequence = Html.fromHtml("<img>", new Html.ImageGetter() { 10 @Override 11 public Drawable getDrawable(String source) { 12 // 装载图像资源 13 Drawable drawable = getResources().getDrawable(R.drawable.kobe); 14 // 设置要显示图像的大小(按原大小显示) 15 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 16 return drawable; 17 } 18 }, null); 19 } 20 21 public void click(View view) 22 { 23 tv_text.setText(charSequence); 24 }
运行效果图:
使用StateListDrawable(通常会称为使用selector)
我们经常会给Button设置一个selector。StateListDrawable表示Drawable的集合,集合中的每个Drawable都对应着View的一种状态,系统会根据View的状态来给View设定相应的Drawable。需要强调的是:系统会跟据View当前的状态从selector中选择对应的item,每个item对应着一个具体的Drawable,系统会自上而下的查找,知道找到第一条匹配的item。一般来说默认的状态都会放在最后并且不附带任何状态,这样当其他item都无法匹配的时候系统会选用默认的item。(一般不要把默认的item放在第一条,因为系统会一直选用这个默认的状态)。
下面是一个使用的事例:
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 3 4 <item android:state_pressed="true" 5 android:drawable="@android:color/holo_red_dark"/><!-- 表示被点击状态--> 6 <item android:drawable="@android:color/black"/> <!-- 表示默认状态--> 7 </selector>