您的位置:首页 > 移动开发 > Android开发

Android的第一个hello world

2014-06-11 23:55 411 查看
首先我们会想,我们以前的HelloWorld, 都会有个main 函数的入口点, Android应用的入口在哪来呢?

src 下的FirstActivity.java? 貌似找不到任何熟悉的main函数的定义。

不用找了, Android应用里面并没有main函数。但是它确实有个入口:

在AndroidManifest.xml 我们看到这个activity节点



<activity
android:name=".FirstActivity"
android:label="@string/title_activity_first" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>





在此前我们已经多次提到Activity,那啥事Activity呢?

我的理解是,Activity是一个容器组件,是一个承载界面,可以和用户进行交换的组件,有点类似PC上的window,但是不一样的是,通常一个Activity通常就占据了整个屏幕,而且当前只能有一个Activity与用户交互。

我们在代码src下添加了一个Activity后,必须同时在AndroidManifest.xml中声明整个activity,才是有效的。如果希望程序启动时,就打开你指定的Activity,则需要在那个activity节点当中加入

 

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>


 

现在我们来看看代码:FirstActivity.java



public class FirstActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.first, menu);
return true;
}

}





我们看到这个类的特点:

继承自 Activity类

重载了onCreate()方法。//onCreateOptionsMenu用于创建菜单,不是必须。

 

我们已经知道res/layout下面是放置界面布局文件的,我们已经有一个first.xml在那里了,那么代码是怎么和这个界面layout布局文件关联起来的呢?

那是onCreate方法中这句话起的作用:

setContentView(R.layout.first);

当Android应用启动一个Activity时,首先会调用的是onCreate(Bundle savedInstanceState)方法,只有调用了setContentView()方法后,界面才会呈现出来

 

下面我们来看看layout文件:res/layout/first.xml:



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="@dimen/padding_medium"
android:text="@string/hello_world"
tools:context=".FirstActivity" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:text="Click Me" />

</RelativeLayout>





 

 

 

根节点是RelativeLayout, 它是相对布局,一种布局方式,别的布局方式还是有线性布局,帧布局等。

TextView 是文本控件,用于显示文本,不可输入,类似于Label

Button 按钮控件。

观察发现,他们都有这些xml属性:

android:id:控件的id,用于唯一确定控件。

android:layout_width,android:layout_height: 控件的宽高

id的写法一般是@+id/xxxxxx, 宽高的值可以为三种之一:wrap_content, fill_parent, match_parent.

wrap_content是指,在画控件时,根据控件的实际内容来动态确定大小。

fill_parent, match_parent实际上是一个意思,占满父容器的空间,区别只是match_parent是在Android2.2之后引进的。

android:text 是控件的文本内容,值可以直接填写,也可以引用values/strings.xml下的定义。例如

android:text="@string/hello_world" 就是引用了res/values/strings.xml下的:

<string name="hello_world">Hello world!</string>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: