Android控件系列之XML静态资源使用介绍

2016-02-19 11:25 5 1 收藏

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的Android控件系列之XML静态资源使用介绍教程,一起来看看吧!超容易上手~

【 tulaoshi.com - 编程语言 】

学习目的:
1、了解在Android中如何设置和调用XML资源
2、掌握如何利用XML和JAVA代码进行协同开发界面
3、理解R文件的作用

开发Android时,总能看到一个系统自动生成的R.java文件:

您必须了解一下几个要点:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

1、R.java是自动生成的,并且强烈建议您不要去手动修改其中的代码。
2、R类中的若干个内部类的名字和Android项目中的res文件下的子文件名字一致(除了drawable自动分为了高中低3个等级):

您的项目中可能不是如上图中的文件或代码,但它们一定符合上述的规则

3、这些内部类中的静态字段,代表一个资源的ID,这些ID一定唯一,并且与res中指定的资源一一对应,如上图中的0x7f020000一定对应着icon.png图片资源。

4、资源可以是各种类型:如图片、XML等,其中XML中的每个节点也可以具有ID,为它们设置ID后,R文件也会为它们自动生成一一对应的ID

5、ID被自动写入R.java后,就能通过代码访问这些ID。但是,单纯的获取这些ID是没有任何意义的,如0x7f020000不代表任何东西,好在Android提供了通过代码获取指定ID所对应的资源的方法:通过View类的getResources()方法,可以获取一个Resources类的实例,然后通过GetXXXX(int id)方法,可以根据整形的ID,获取指定类型的资源。另外许多控件提供了赋值的2种版本,可以动态的设置值,也赋值为资源文件中的值,如下图显示了TextView控件setText的2个重载版本:

在Activity中布局的2种方式:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

纯代码布局:

代码如下:

//初始化一个TextView
TextView view = new TextView(this);
//设置显示的文本内容
view.setText("这是一个文本显示控件");
//进行布局
view.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
//用Activity承载这个View
this.setContentView(view);


纯代码的布局,虽然灵活,但具有JAVA代码量大,难以维护等缺点。

XML+JAVA的布局:

在reslayout文件下的xml,一般是用来给Android提供布局方案的特殊XML。
要想用它来布局,需要显示的引入XML命名空间:xmlns:android=http://schemas.android.com/apk/res/android
并且所有的布局文件的属性都以“android:”作为限定,最常用的是layount_width、layount_height、text等属性

如果需要控件显示的文本来自于资源文件,则可以使用@限定符+资源文件夹 + / + 资源ID,如需要绑定String资源中的hello值,可以使用:

android:text=" @string/hello"。
下面仅演示一个普通的XML布局,并且如何在Activity中用代码调用这个布局,并承载它。

在Layout下的main.xml:

代码如下:

?xml version="1.0" encoding="utf-8"?
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello wt!"
/
/LinearLayout


那么R.layout中会存在一个与之对应的ID,名字与布局文件的xml文件名一致,并且不带后缀名:
//通过main.xml文件对应的静态ID来为Activity布局this.setContentView(R.layout.main);
对比“纯代码布局”和“XML+JAVA”布局,我们可以发现,大部分时候后者更有优势:
1、界面和业务逻辑完全分离
2、程序编译后,依然可以修改布局文件
3、利用一些第三方工具布局,甚至可以几乎不用写XML代码
XML布局文件中的控件如何生成R中的ID,并在代码中得到该控件:
前面提到,导入任何资源文件或者新建XML布局文件后,R.java会生成与之一一对应的ID,也介绍了布局文件中为控件赋资源值可以使用@限定符。
因此在程序代码中,可以根据布局文件的ID得到该布局文件,那么如何得到具体控件的实例呢?
不同于布局文件会自动生成ID,控件需要您手动的配置它,规则如下:
android:id = "@+id/控件名称",这样,保存该布局文件后,R中会产生一个名为id的类,里面也自动的产生了与控件名称相一致的ID。
因为所有的控件都派生自View,所以在Activity中,可以通过this.findViewById(R.id.控件名称)方法获取指定ID的控件实例,但注意可能需要强制转换成您需要的类型:
如采用匈牙利命名法在XML中建立了一个按钮,其ID属性:android:id = "@+id/btnOK",
则在Activty中,可以使用Button btn = (Button)this.findViewById(R.id.btnOK);获取到的btn即为XML中定义的按钮的一个实例。接下来,您就可以利用btn.setText等方法操作该按钮了。

总结:

本文全面介绍了在Android中,如何充分利用XML布局文件来配合Java构筑界面,从而达到界面与逻辑的代码分离。另外,还介绍了如何分别在XML和代码中如何获取静态资源的值或者控件的实例。

来源:https://www.tulaoshi.com/n/20160219/1597423.html

延伸阅读
标签: Web开发
在搞定了基本的伪动态之后,我马上把它应用到了网站,但随后就发现了一个问题:我如何来管理新闻列表呢?要是让我在每次要加新闻时去修改源文件然后再上传我可是千万个不愿,不仅麻烦而且容易出错,懒人怎么能可以这么做。动动脑子,于是想到了用XML,这个早已存在,但近些年才流行起来的技术。 在HTML里,可以使用数据岛来使用XML数据,一个...
  在android中,文本控件主要包括TextView控件和EditView控件,本节先对TextView控件的用法进行详细介绍。     TextView类继承自View类,TextView控件的功能是向用户显示文本的内容,但不允许编辑,而其子类EditView允许用户进行编辑。     以下为TextView常用属性及对应方法说明
在Android平台中,集成了一个嵌入式关系型数据库-- SQLite ,它支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然只支持五种数据类型,实际上可以接受varchar(n),char(n),decimal(p,s)等数据类型,在进行运算或保存的时候会转换成对应的五种数据类型。 ex: 可以在Integer类型的字段中存放字符串,或者在布...
在android中,LayoutInflater有点类似于Activity的findViewById(id),不同的是LayoutInflater是用来找layout下的xml布局文件,并且实例化!而findViewById()是找具体xml下的具体 widget控件(如:Button,TextView等)。 下面通过一个例子进行详细说明: 1、在res/layout文件夹下,添加一个xml文件dialog.xml 代码如下: LinearLayout xmlns:an...
AppWidgetProvider 用来在HOME页面显示插件 实现步骤: 1、为AppWidget提供一个元布局文件AppWigdetProvider_Provider.xml,用来显示Widget的界面。 2、创建一个类继承自AppWidgetProvider,并覆写里面的相关的方法。 3、为WidgetProvider创建一个引用的布局文件,或者直接用main.xml。 4、在程序中注册Manifest.xml。 代码如下: 1、在res/x...

经验教程

116

收藏

58
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部