Layout与Activity的关系

  接触Android Studio两天,写一些自己的感受。Android Studio呈献给我们的是一个良好的用户交互界面,我们在界面上进行操作,通过触发相应控件而运行Java程序。这告诉我们几个事情:

  ①我们首先要设计用户界面,也就是layout包中.xml文件。在design界面可以拖拽控件,并双击进行简单的属性编辑,个人不很推荐这种编辑方式,因为我们通常要对一个控件的多个属性编辑,还要进入text编辑,不如一次完成。此外Android 2.1提供很智能的代码编写,只需输入几个关键字母就可以在列表中找到对应的函数,很方便很强大。

  ②Activity通过调用findViewById()函数,引用页面布局的控件,将Activity与控件联系起来,通常括号中的是(R.id.xxx),xxx为页面布局中定义的控件ID名。此时,我们还要解释一下R,R.java文件是由aapt工具根据应用中的资源文件来自动生成的,因此我们可以吧R.java看成Android应用的资源字典,aapt生成R.java文件的规则主要是两条:每类资源对应R类的一个内部类。比如,所有界面布局资源对应于layout内部类;每个具体的资源项对应于内部类的一个public static final int类型的Field,若界面布局中用到了ok,show两个标识符,则R.id类里就包含了这两个Field。随着我们不断地向Android项目中添加资源,R.java文件的内容也会越来越多。[1]

  ③当我们对界面中的控件进行操作,比如说点击按钮,在Activity中我们为了能够知道用户何时对按钮点击,我们要为按钮设置一个单击监听器,即调用setOnClickListener()函数。如果是在一个方法中的匿名内部类,参数必须被声明为final,调用方法暂时还没有搞懂 囧 下次继续写,么么哒。

  下面是我的第一个Android程序:

public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bn=(Button)findViewById(R.id.ok);
        bn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final TextView show=(TextView)findViewById(R.id.show);
                show.setText("Hello Miss Qiao!"+new java.util.Date());
            }
        });
    }

注:

No.1 @Override:

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 

1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。(参考网址:http://blog.csdn.net/zht666/article/details/7869383)

No.2 setContentView(R.layout.activity_main);

R.layout.main是个布局文件即控件都是如何摆放如何显示的,setContentView就是设置一个Activity的显示界面,这句话就是设置这个这句话所再的Activity采用R.layout下的main布局文件进行布局。可以切换为layout包下的不同.xml文件。

No.3 public void onCreate(Bundle savedInstanceState)

Activity的初始化,当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息。用来保存状态信息的Bundle会同时传给两个method,即onRestoreInstanceState() and onCreate().

 

运行结果是:

 

 

刚开始接触Android的菜鸟,若有不对的地方,欢迎大家指正

 

[1]:对R的解释引自李刚,疯狂Android讲义

posted @ 2016-07-20 01:47  小苏打.iLD  阅读(3584)  评论(0编辑  收藏  举报