为了尽快的向网友介绍其他android开发的核心知识,对于资源的进阶部分就概括的说一下。一来因为大家刚接触到android开发,写太多大家也不容易理解;二来随着讨论的深入,我们可以回过头来把这些内容补全。
String资源深入
这里讲到了如何在XML文件中定义更多的string资源,如quoted strings,HTML strings,java formated_strings等。
下面分别是他们在XML文件中的语法:
<resources>
<string name = "quoted_string">"quoted' string"</string>
<string name="tagged_string">
Hello <b><i>加粗的文字</i></b>
</string>
<string name="java format_string">
Hello %2$s java format string. %1$s again
</string>
</resources>
下面是在Java代码中使用String资源
比如使用quoted_string,并在text view里进行设置
String quotedString = activity.getString(R.string.quoted_string);
textView.setText(quotedString);
使用html string
String htmlTaggedString = activity.getString(R.string.tagged_string);
Spanned textSpan = android.text.Html.fromHtml(htmlTaggedString);
textView.setText(textSpan);
注意:android并不支持所有的Html格式
使用Java format string
String javaFormatString = activity.getString(R.string.java_fromat_string);
String substitutedString = String.format(javaFromatString,"Hello","Android");
textView.setText(substitutedString);
度量资源(Dimension Resources)深入
像素、英尺、点阵都是度量资源,它们带来的方便是:可以不修改源代码来改变UI的样式。
下面是在XML文件中定义Dimension Resources
<resources>
<dimen name = "mysize_in_pixels">1px</dimen>
<dimen name = "mysize_in_db">5dp</dimen>
<dimen name="medium_size">100sp</dimen>
</resources>
注:其中的dp指独立于密度的像素单位,sp是独立于伸缩的像素单位
下面是Java通过Resource对象的实例来获得dimension:
Float dimen = activity.getResources().getDimension(R.dimen.mysize_in_pixels);
下面是在XML中定义TextView时引用dimension(在XML文件里采用的是简写dimen)
<TextView android: layout_width="fill_parent"
Android:textSize="@dimen/medium_size" />
图像资源深入
从以前的讨论当中可以知道图像资源所产生的ID值是由文件名决定的,比如在/res/drawable目录下有个sample_image.jpg文件,那么资源ID就是R.drawable.sample_image。要注意的是,图像资源必须放在/res/drawable文件夹下,而且不允许在此文件夹下的子文件夹中,否则不会被读取。
下面是在XML中定义Button时引用图像资源
<Button
Android:id="@+id/button1"
Android:background="@drawable/sample_image"
/>
你也可以使用Java代码来调用它:
BitmapDrawable d = activity.getResources().getDrawable(R.drawable.sample_image);
button.setBackgroundDrawable(d);
Color-Drawable Resources
在Android里,图像属于drawable资源的一种。Android还支持其他drawable的资源,比如color-drawable资源,主要代表一个颜色块。
要定义这些颜色块,你需要在/res/values目录中的XML文件中用drawable节点来定义。
下面是在XML文件中定义Color-Drawable 资源
<resources>
<drawable name="red_rectangle">#f00</drawable>
</resources>
下面是在Java代码里使用Color-Drawable资源
ColorDrawable redDrawable = (ColorDrawable)
activity.getResources().getDrawable(R.drawable.red_rectangle);
textView.setBackground(redDrawable);
在XML代码里引用
<TextView android:layout_width="fill_parent"
Android:background="@drawable/red_rectangle" />
这里需要指出的一点是:在android的官方文档中没有提供圆角矩形的相关支持,这里我们通过<shape>标签来定义圆角矩形,尽管<shape>标签也未在官方文档中出现。
下面是在/res/drawable/my_rounded_rectangle.xml文件中的定义:
<shape xmlns:android="http://schemas.android.com/apk/res/randroid">
<solid android:color="#f0600000"/>
<corners android:radius="13dp" />
</shape>