[Android 步步为营]第2营:Hello World 第一个Android应用(下)

上一讲已经成功运行了HelloWorld,接下来讲解一下

首先我们会想,我们以前的HelloWorld, 都会有个main 函数的入口点, Android应用的入口在哪来呢?

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

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

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

        <activity
            android:name=".FirstActivity"
            android:label="@string/title_activity_first" >

        </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>

 

好了,把Android应用开发的各个基本部分都讲解了,为了更好的理解,我们学以致用,来练习一下。

需求:

设计一个用户登录界面,让用书输入用户名,密码,如果用户名为admin,密码为123,则提示登录成功,否则提示失败。

 

好, 请听下回分解。

转载于:https://www.cnblogs.com/vivid-stanley/archive/2012/08/14/2638467.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值