•活动是什么

  活动(Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件;

  主要用于和用户进行交互;

  一个应用程序可以包含零个或多个活动。

  接下来,我们来学习一下活动的基本用法。

•准备阶段

  新建一个 Android 项目,命名为 ActivityTest,并选择 Add No Activuty。

  点击 Finish,等待 Gradle 构建完成后,项目就创建成功了。

  项目创建成功后,将项目结构改成 Project 模式。

•手动创建活动

  点击  app/src/main/java ,找到  com.example.activitytest  包, 右击->New->Activity->Empty Activity ;

  此时,会弹出一个创建活动的对话框,暂且将活动命名为 FirstActivity;

  并且不要勾选  Generate a Layout File  和  Launcher Activity ;

  • 勾选  Generate a Layout File  表示会自动为 FirstActivity 创建一个对应的布局文件
  • 勾选  Launcher Activity  表示会自动将 FirstActivity 设置为当前项目的主活动

  需要知道的是,项目中的任何活动都应该重写  onCreate()  方法;

  打开你的 FirstActivity.java,你会发现,Android Studio 帮我们自动生成了;

FirstActivity.java

public class FirstActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}

  可以看到, onCreate() 方法非常简单,就是调用了父类的  onCreate() 方法。

  当然,这只是默认的实现,后面我们还需要在里面加入很多自己的逻辑。

•创建和加载布局

  Android 程序的设计讲究逻辑和视图的分离,最好每一个活动都对应一个布局;

  布局就是用来显示界面内容的;

  接下来,我们手动创建一个布局文件;

  点击  app/src/main ,找到 res 目录, 右击->New->Directory ;

  会弹出一个新建目录的窗口,这里先创建一个名为 layout 的目录;

  右击layout->New->Layout resource file;

  此时会弹出一个新建布局资源文件的窗口,将其命名为 first_layout,根元素默认即可。

  点击 OK 完成布局的创建;

  上图是 Android Studio 为我们提供的可视化布局编辑器;

  在窗口的右上角(①)有三个切换卡;

  • Design : 当前可视乎布局的编辑器

    • 在这里你不仅可以预览当前的布局,还可以通过拖放的方式编辑布局
  • Code : 通过 .xml 文件编辑布局

  • Split :  两者都显示

  左上角(②)也有不同的模式可以切换;

  选择不同的选项对应不同的模式,具体自己点击体会;

•在活动中加载这个布局

  来到 FirstActivity.java 下,在  onCreate()  方法中加入如下代码:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);//给当前的活动加载一个布局
}

  java 代码中通过调用 s etContentView() 方法给当前活动加载一个布局,而在该方法中,一般传入一个布局文件的 id。

  因为项目中添加的任何资源都会在 R 文件中生成一个相应的资源 id;

  因此我们刚才创建的 first_layout.xml 布局的 id 已经添加到 R 文件中了;

  所以通过 R.layout.first_layout 方式就可以获取创建的布局文件的 id。

•在AndroidManifest文件中注册

  所有的活动都要在 AndroidManifest.xml 中进行注册才能生效。

  打开 AndroidManifest.xml 文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activitytest"> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.ActivityTest">
<activity android:name=".FirstActivity"></activity>
</application> </manifest>
  • lable : 为应用程序设置名称

  • icon : 为应用程序设置桌面图标

  可以看到,Android Studio 已经为我们创建的活动自动注册了。

  活动注册声明要放在  <application>  标签内,这里是通过  <activity>  标签来对活动进行注册的。

  在 <activity> 标签中我们使用了  android:name  来指定具体注册哪一个活动,那么这里填入的 .FirstActivity 是什么意思呢?

  其实这不过是  com.example.activitytest.FirstActivity  的缩写而已。

  由于在最外面  <manifest>  标签中已经通过 package 属性制定了程序的包名是  com.example.activitytest ;

  因此在注册活动时,这一部分给省略了。

  不过,仅仅是这样注册了活动,我们的程序仍然是不能运行的;

  因为还没有为程序配置主活动;

  也就是说,当程序运行起来的时候,不知道要首先启动哪个活动。

•为程序配置主活动

  需要在   <activity>  标签中加入以下语句:

<activity android:name=".FirstActivity" android:label="This is FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

  这样的话,FirstActivity 就称为我们这个程序的主活动了;

  即点击桌面应用程序图标时首先打开的就是这个活动;

  除此之外,我们还可以通过使用  android:label  指定活动中标题栏的内容;

  标题栏是显示在活动最顶部的;

  需要注意的是,给主活动指定的 lable 不仅会成为标题栏中的内容,还会成为应用程序的名称;

  也即是说,设置了内层的 lable,那么外层的 lable 就失去了作用;

Android 之 手动创建活动的更多相关文章

  1. android2.3 View视图框架源码分析之一:android是如何创建一个view的?

    View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. ...

  2. Android开发--第一个活动

    一.创建工程   1 项目名:MyActivity 包名:com.iflytek.myactivity 2 为了便于学习,不勾选Create Activity.然后finish,工程创建完成 END ...

  3. 【Android】9.0活动的生命周期(二)——实际代码演示

    1.0  新建一个项目ActivityLifeCycleTest. 新建两个活动NormalActivity和DialogActivity,勾选“Generate Layout File”. 文件目录 ...

  4. 【Android】8.0活动的生命周期(一)——理论知识、活动的启动方式

    1.0 Android是使用任务(Task)来管理活动的,活动就像栈一样堆放着在一起. 每个活动的生命周期最多可能会有四种状态: 1.1 运行状态 位于栈顶 1.2 暂停状态 不在栈顶但在界面上仍处于 ...

  5. Android无法自动创建USB打印机节点/dev/usb/lp0【转】

    本文转载自:http://blog.csdn.net/u013686019/article/details/50165059 Android: 4.4.4 一.问题分析 当把USB打印机插入Andro ...

  6. 通过手动创建统计信息优化sql查询性能案例

    本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...

  7. 手动创建VS单元测试,显示代码覆盖率

    Visual Studio 号称有史以来最强大的IDE,确实如此.创建单元测试也是一键完成:在方法的代码块中右键“Create Unit Test…”,勾选测试项,填项目名,完成.VS就会自动帮你创建 ...

  8. java web(一) 使用sql标签库+tomcat+mysql手动创建一个jsp练习总结

    2016-09-0111:06:53                                     使用sql标签库+tomcat+mysql手动创建一个jsp 1. 1.1安装tomcat ...

  9. Maven 系列 二 :Maven 常用命令,手动创建第一个 Maven 项目【转】

    1.根据 Maven 的约定,我们在D盘根目录手动创建如下目录及文件结构: 2.打开 pom.xml 文件,添加如下内容: <project xmlns="http://maven.a ...

随机推荐

  1. 如何用 js 实现一个 call 函数

    如何用 js 实现一个 call 函数 原理 实现方式 总结 refs https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenc ...

  2. js 如何打印出 prototype 的查找路径

    js 如何打印出 prototype 的查找路径 Function function func (name) { this.name = name || `default name`; } f = n ...

  3. PAUL ADAMS ARCHITECT:爱丁堡的房屋价值创历史新高

    近日,英国知名房产公司保罗·亚当斯公司根据一组调查报告表示,今年第三季度,爱丁堡的房价再创历史新高,并向大家分析了原因. 保罗·亚当斯公司(公司编号:07635831)是英国一家著名的房地产公司,总部 ...

  4. opencv打不开摄像头

    问题描述: capFace = cv2.VideoCapture(0) 报错: VIDEOIO ERROR: V4L2: Unable to capture video memory. VIDEOIO ...

  5. C++算法代码——快速排序

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?cid=1371&pid=1 题目描述 第一行一个数字n, n<=100000. ...

  6. java与freemarker遍历map

    一.java遍历MAP /** * 1.把key放到一个集合里,遍历key值同时根据key得到值 (推荐) */ Set set =map.keySet(); Iterator it=set.iter ...

  7. Python3.x 基础练习题100例(21-30)

    练习21: 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前 一天剩下的一半零一个.到第10天早上 ...

  8. 探索 .NET Core 依赖注入的 IServiceProvider

    在上一篇文章中,我们学习了Microsoft.Extensions.DependencyInjection中的IServiceCollection,包括服务注册转换为ServiceDescriptor ...

  9. PVE更新WEB管理地址

    PVE也是一台Linux系统,如果PVE更换了网络环境,比如从家里拿到了办公室,那么就需要对其更新网络,才能让其它机器访问到它的8006管理地址. 具体做法是通过修改配置文件来更改IP. 更新网卡配置 ...

  10. [00]数字图像处理-matlab速成

    原本听的是mooc武汉大学的数字图像处理课程,但是无奈老师读ppt的能力太强,不太适应,后面的课程对于实验方面的要求甚低,无奈之下到处找课程,终于找到了一个适合自己的教程<王伟强-数字图像处理& ...