之前虽然我们已经完成了HelloWorld activity的创建,但那主要是AS来帮助我们完成的,所以这次就来手动创建一个activity
新建项目
新建项目的步骤跟之前一样,只不过在选择activity类型的时候,要选择
Add No Activity,这样创建出来的项目才是没有activity的项目
然后就是输入项目名称、选择语言等操作
手动创建活动
把AS的项目结构切换成
Project模式由于当前项目中没有activity,所以com.example.activitytest文件夹是空的
右键点击
com.example.activitytest-->New-->Activity-->Empty Activity ,会弹出一个新建activity的对话框注意
不要勾选Generate Layout File 和 Launcher Activity这两个选项,因为布局文件等会需要手动创建
创建好了之后就可以在项目目录下看到新建的activity了
创建布局文件
每一个activity都对应着一个布局,布局就是用来显示界面内容的,现在就来创建一个布局文件在
res文件加上
右键-->New-->Directory,会弹出一个新建目录的窗口,输入名称layout
然后在
layout目录上
右键-->Layout resource file,弹出一个新建布局资源文件的窗口,输入好名称,根元素默认选择LinearLayout
完成之后,就可以看到新创建的布局文件了
每个布局文件都有两种模式,一种是
Design模式,也是就是图片中的这种可视化模式,还有一个
Text,通过xml文件的方式来编辑布局这就是Text模式下的布局文件:
接下来我们在activity中添加一个按钮,在布局文件中添加如下代码:
<Button android:id="@+id/button_1" android:text="Button 1" android:layout_width="match_parent" android:layout_height="wrap_content" />
<Button
android:id="@+id/button_1"
android:text="Button 1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
- android:id
给当前元素定义了一个唯一的标识符,之后可以在代码中通过这个元素进行操作
- android:text
指定了元素中显示的文字内容
- android:layout_width
指定了当前元素的宽度,match_parent表示和当前元素的父元素一样宽
- android:layout_height
指定了当前元素的高度,wrap_content表示当前元素的高度只要能刚好包含里面的内容就行此时activity中的界面是这样子的:按钮的宽度和父元素一样宽,高度刚好包含了里面的文字
在activity中加载布局
这个时候回到主界面的代码,添加一行:
这里调用了
setContentView()方法来给当前的活动加载一个布局,这个方法的参数一般都是传入一个布局文件的id。在项目中添加的任何资源都会在R文件中生成一个相应的资源id,我们之前添加的first_layout.xml布局的id现在已经添加到R文件中了。较新版本的AS已经把R文件隐藏起来了,所以现在在项目目录是找不到这个文件的
在AndroidManifest文件中注册
所有的活动都需要在AndroidManifest文件中进行注册才能生效实际上我们的第一个activity:MainActivity已经在AndroidManifest中注册过了在创建好这个activity的时候,AS就自动帮我们在AndroidManifest注册了活动的注册声明要放在标签内,这里是通过标签 来对活动进行注册的android:name指明了具体注册哪一个activity仅仅是注册了活动,我们的app还是不能运行起来的,因为还没有配置主活动配置主活动的方法就是在标签内部加入标签,并在这个标签里面添加下面两行代码:
<action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/>
总体效果:
现在MainActivity就成了这个程序的主活动了,也就是在手机的桌面点击app的图标时,首先启动的就是这个activity如果一个app没有声明任何activity作为主activity,这个程序也是可以安装的,但是无法在启动器中看到或者打开这个程序。这种程序一般是作为第三方服务供其他应用内部进行调用的,比如作为一些服务来运行一切准备就绪,来运行一下这个程序吧运行结果:
以上就是手动创建一个activity的全部内容了