认识Android编程各个文件之间的联系和使用方法,以及认识Activity文件结构的大体可以看下图:

代码在src中的.java文件中编辑,gen目录下有一个R.java的文件,这个文件存储res目录下各种资源文件的id号,在主文件java中调用该资源的时候直接调用id号即可,如 R.layout.main ,这个条目得打开R.java文件中查看,"R"对应R.java文件,"layout"对应R.java文件中的layout类,"main"对应layout类中的一个静态常量声明。
实际上res中的每一个文件都会在R.java中自动产生静态常量,这是res目录和assets目录最大的不同之处,这样做的好处不言而喻,对资源的修改不会对代码产生任何的影响,因为代码中使用的只是ID号码而已。
res目录中的前三个文件夹是存放图片资源的,而且通常情况下同一张图片要有三个版本二,高低中分辨率。
第四个文件夹是存放布局文件的,main.xml,一个Activity对应一个xml文件,而且每个Activity都要在AndroidMainfest.xml中注册一下。default.properties文件在学java的时候接触过,无非也是对对代码的可重复性使用和修改提供了方便而已。第一个Java Activity程序,会体现出这些文件之间的关系和使用。
下面程序任务:添加一个显示文本和一个按钮
对Activity的初步认识:就像一个窗口,能显示信息,又像一个容器,能容纳功能空间,如button,在程序角度上看,又像一个 类,可以和其他的类(Activity)发生联系。
创建Activity的要点:
MyActivity.java 文件
main.xml 文件
R.jar 文件该文件自动生成,不要自己改动
其实走一遍添加Button的流程就明白各个文件间的联系了:
1. 先打开main.xml文件,加一个button按钮的布局
2. 其实上一步完成后,编译运行已经能看到一个Button按钮了,但是我想在按钮上添加文字以说明该按钮的作用,在java中的程序为 :
那么在Android程序中如何在.java源文件中拿到刚才在main.xml中添加的控件呢?
基于这个目的,在main.xml文件中加了此句:android:id="@+id/myButton",这一句使得R.java文件中多了一个叫id的类,该控件的id号就在这个类中出现了,这样做为了方便.java文件中的调用。
实际上如果不加上一句,该控件是不会在R.java文件中产生id号码的,因为只有在res目录中添加文件才会自动在R.java中产生id号,而添加一个控件只是在一个资源文件中做修改而已,所以不会自动产生id号。
我们可以看一下R.java文件中自动产生的ID代码:
然后在.java文件中就可通过getViewById()方法拿到控件了。
拿到控件之后就可以像java程序中一样进行相关操作了,代码如:
实际上这个流程只体现了xml文件和R.java文件之间的联系(通过该句:android:id="@+id/myButton),以及.java与R.java之间的联系(通过该句:findViewById(R.id.myTextView) )。补充一下其他文件关系的代码体现:
MyActivity.java文件与Main.xml文件的联系时通过MyActivity.java文件中的setContentView(R.layout.main);体现的,因为一个Activity文件要对应一个布局文件。
MyActivity.java文件与AndroidManifest.xml文件之间的联系时通过AndroidManifest.xml文件中的。
来体现的,这也说明了Activity创建的关键点之一:每一个Activity都应该在AndroidManifest.xml文件中进行配置。
代码在src中的.java文件中编辑,gen目录下有一个R.java的文件,这个文件存储res目录下各种资源文件的id号,在主文件java中调用该资源的时候直接调用id号即可,如 R.layout.main ,这个条目得打开R.java文件中查看,"R"对应R.java文件,"layout"对应R.java文件中的layout类,"main"对应layout类中的一个静态常量声明。
实际上res中的每一个文件都会在R.java中自动产生静态常量,这是res目录和assets目录最大的不同之处,这样做的好处不言而喻,对资源的修改不会对代码产生任何的影响,因为代码中使用的只是ID号码而已。
res目录中的前三个文件夹是存放图片资源的,而且通常情况下同一张图片要有三个版本二,高低中分辨率。
第四个文件夹是存放布局文件的,main.xml,一个Activity对应一个xml文件,而且每个Activity都要在AndroidMainfest.xml中注册一下。default.properties文件在学java的时候接触过,无非也是对对代码的可重复性使用和修改提供了方便而已。第一个Java Activity程序,会体现出这些文件之间的关系和使用。
下面程序任务:添加一个显示文本和一个按钮
对Activity的初步认识:就像一个窗口,能显示信息,又像一个容器,能容纳功能空间,如button,在程序角度上看,又像一个 类,可以和其他的类(Activity)发生联系。
创建Activity的要点:
- 一个Activity就是一个类,类名随意起,不过必须继承Activity这个父类。
- 需要复写onCreate()方法
- 每一个Activity都应该在AndroidManifest.xml文件中进行配置
- 为Activity添加必要的控件
MyActivity.java 文件
01 | package geeker.MyActivity; |
02 | import android.app.Activity; |
03 | import android.os.Bundle; |
04 | import android.widget.Button; |
05 | import android.widget.TextView; |
06 | public class MyActivity extends Activity { |
07 | //成员变量的声明 |
08 | private TextView myTextView = null; |
09 | private Button myButton = null; |
10 | //重写OnCreate方法,会自动生成 |
11 | public void onCreate(Bundle savedInstanceState) { |
12 | //调用父类方法,该句代码自动生成 |
13 | super.onCreate(savedInstanceState); |
14 | //通过布局文件的id调用该Activity所使用的布局文件 |
15 | setContentView(R.layout.main); |
16 | //通过findViewById()方法拿到布局文件中添加的控件 |
17 | //不过在布局文件中添加控件的时候必须定义id号, |
18 | //如:android:id="@+id/myTextView" |
19 | myTextView = (TextView)findViewById(R.id.myTextView); |
20 | myButton = (Button)findViewById(R.id.myButton); |
21 | //向控件上制定显示文字 |
22 | myTextView.setText("This is my first Activity !"); |
23 | myButton.setText("MY FIRST BUTTON"); |
24 | } |
25 | } |
01 | <?xml version="1.0" encoding="utf-8"?> |
02 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
03 | android:orientation="vertical" |
04 | android:layout_width="fill_parent" |
05 | android:layout_height="fill_parent" |
06 | > |
07 | <TextView |
08 | android:id="@+id/myTextView" |
09 | android:layout_width="fill_parent" |
10 | android:layout_height="wrap_content" |
11 | /> |
12 | <Button |
13 | android:id="@+id/myButton" |
14 | android:layout_width="fill_parent" |
15 | android:layout_height="wrap_content" |
16 | /> |
17 | </LinearLayout> |
01 | /* AUTO-GENERATED FILE. DO NOT MODIFY. |
02 | * |
03 | * This class was automatically generated by the |
04 | * aapt tool from the resource data it found. It |
05 | * should not be modified by hand. |
06 | */ |
07 | package geeker.MyActivity; |
08 | public final class R { |
09 | public static final class attr { |
10 | } |
11 | public static final class drawable { |
12 | public static final int icon=0x7f020000; |
13 | } |
14 | public static final class id { |
15 | public static final int myButton=0x7f050001; |
16 | public static final int myTextView=0x7f050000; |
17 | } |
18 | public static final class layout { |
19 | public static final int main=0x7f030000; |
20 | } |
21 | public static final class string { |
22 | public static final int app_name=0x7f040001; |
23 | public static final int hello=0x7f040000; |
24 | } |
25 | } |
1. 先打开main.xml文件,加一个button按钮的布局
1 | <Button |
2 | android:id="@+id/myButton" |
3 | android:layout_width="fill_parent" |
4 | android:layout_height="wrap_content" |
5 | /> |
1 | Button bt = new Button(); |
2 | bt.setText("MY FIRST BUTTON"); |
那么在Android程序中如何在.java源文件中拿到刚才在main.xml中添加的控件呢?
基于这个目的,在main.xml文件中加了此句:android:id="@+id/myButton",这一句使得R.java文件中多了一个叫id的类,该控件的id号就在这个类中出现了,这样做为了方便.java文件中的调用。
实际上如果不加上一句,该控件是不会在R.java文件中产生id号码的,因为只有在res目录中添加文件才会自动在R.java中产生id号,而添加一个控件只是在一个资源文件中做修改而已,所以不会自动产生id号。
我们可以看一下R.java文件中自动产生的ID代码:
1 | public static final class id { |
2 | public static final int myButton=0x7f050001; |
3 | public static final int myTextView=0x7f050000; |
4 | } |
拿到控件之后就可以像java程序中一样进行相关操作了,代码如:
1 | private Button myButton = null; |
2 | myButton = (Button)findViewById(R.id.myButton); |
3 | myButton.setText("MY FIRST BUTTON"); |
MyActivity.java文件与Main.xml文件的联系时通过MyActivity.java文件中的setContentView(R.layout.main);体现的,因为一个Activity文件要对应一个布局文件。
MyActivity.java文件与AndroidManifest.xml文件之间的联系时通过AndroidManifest.xml文件中的。
1 | <activity android:name=".MyActivity" |
2 | android:label="@string/app_name"> |
3 | <intent-filter> |
4 | <action android:name="android.intent.action.MAIN" /> |
5 | <category android:name="android.intent.category.LAUNCHER" /> |
6 | </intent-filter> |
7 | </activity> |
本文地址:http://www.nowamagic.net/librarys/veda/detail/1495,欢迎访问原出处。