博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Android 步步为营]第2营:Hello World 第一个Android应用(下)
阅读量:5281 次
发布时间:2019-06-14

本文共 2024 字,大约阅读时间需要 6 分钟。

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

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

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

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

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

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

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

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

 

 

现在我们来看看代码: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, 它是相对布局,一种布局方式,别的布局方式还是有线性布局,帧布局等。

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下的:

Hello world!

 

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

需求:

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

 

好, 请听下回分解。

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

你可能感兴趣的文章
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>
iOS-程序启动原理和UIApplication
查看>>
mysql 8.0 zip包安装
查看>>
awk 统计
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>
12010 解密QQ号(队列)
查看>>
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>
java选择文件时提供图像缩略图[转]
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>