物联网(IoT)开发入门教程:HelloActivity分析

Fleur ·
更新时间:2024-09-20
· 645 次阅读

Android Studio目录结构 我们重新进入Android Studio,就会自动进入之前的工程:HelloActivity。如果不想自动打开上一次的工程,可以点击File下的Settings,然后选择Appearance & Behavior下面的System Settings,然后把Reopen last project on startup勾选掉。 我们看一下右侧的项目目录,可以看到除了gradle的配置文件外,有一个app的目录。这个app目录叫一个module,一个项目可以包含多个module,我们现在目前是一个。(本教程不会涉及到多module的使用,读者可以自行百度。) 下面展开app目录,这里一共有三个文件夹,manifests、java、res,分别代表着配置文件、源码、资源文件。 下面,开始分别讲解每个文件夹的作用和功能。 程序的入口:AndroidManifest.xml分析 首先,我们打开manifests文件夹,这里只有一个AndroidManifest.xml。   我们可以看到最外层是一个manifest标签,里面显示了包名是“com.example.kalen.helloactivity”。在manifest标签里面是一个application标签,也就是我们的Android应用,这里有一些属性,如icon、label,都是设置应用配置的。形如@xxx/xxx的都是从res文件夹下面读取的。比如说,我们要改应用的名称,可以打开res下的values文件夹的strings.xml,然后修改app_name的名字。 再运行应用安装到模拟器的时候,可以看到安装的app的名字就改变了。 当然,也可以通过替换mipmap下的ic_launcher和ic_launcher_round来修改图标,不过和修改字符串不同,我们可以直接在电脑上打开HelloActivity\app\src\main\res目录,可以看到有很多个以mipmap开头的目录,后面的代表不同的尺寸。我们需要设计多个尺寸的图标以适配不同像素的手机。 另外,我们也可以改变应用的主题(style/AppTheme),打开res下面的values里的styles.xml。 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent 可以看到这里设置了三种颜色。我们可以修改colors.xml的colorPrimary、colorPrimaryDark、colorAccent改变这几种颜色。比如我们可以把colorPrimary设置为#000000(黑色)。 再运行app,app顶部的一栏就变成了黑色。 看完了application标签的几个属性,我们来看看它的子标签:activity。这里首先有一个name是“.MainActivity”,这是一个相对的路径(相对于manifest标签下的package:“com.example.kalen.helloactivity”)。这个activity标签指向的是:com.example.kalen.helloactivity.MainActivity 另外,在activity下面有一个intent-filter标签。intent-filter里面有一个action和category,name属性一个是“android.intent.action.MAIN”还有一个是“android.intent.category.LAUNCHER”,通过名字可以看出,这个其实就是标示启动哪个activity的,这样的标签一个应用只能有一个,MainActivity就是我们程序的入口。 MainActivity.java分析 下面看看代码,打开MainActivity.java文件。发现MainActivity.java内只有一个方法:onCreate。 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 在onCreate方法里面,除了调用父类的方法,也只有一行代码,setContentView,翻译过来就是设置内容视图,也就是显示什么内容。 那么R.layout.activity_main是什么?可以看到并没有import任何R文件。我们下面摁住ctrl键,鼠标滑动到layout上面。 可以看到这里显示出了一个0x7f04001b,看起来像一个地址一样。下面,我们再次摁住ctrl键,然后点击activity_main,看看这个是什么东西。可以看到我们跳转到了res下的layout的activity_main.xml里面。 现在应该明白了,这个R文件其实就是和res的一个对应,把res的每个变量都生成一个地址。比如我们输入R.color可以看到colors.xml的三种颜色。 再来看看activity_main.xml,我们可以看到最外面有一个android.support.constraint.ConstraintLayout,是一种布局格式。里面有一个TextView,里面的text属性写着“Hello World”,和app上面的Hello World相对应。 第二个Activity 了解了Activity的布局,下面我们创建第二个Activity,并尝试以第二个Activity作为启动项。 右击com.example.kalen.helloactivity,选择创建一个Java Class。 类的名字设置为SecondActivity,点击回车之后,就会生成一个空的类,下面让它继承AppCompatActivity,并重写onCreate方法。 package com.example.kalen.helloactivity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; public class SecondActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } 接着我们在layout目录下创建一个Layout XML。 命名为activity_second,然后点击Finish。 这里选择创建的布局是LinearLayout,下一章会讲解。先复制下面代码,在LinearLayout里面添加一个TextView用来显示一段文字。   接着,就可以在onCreate方法中添加setContentView(R.layout.activity_second);了。 最后,我们在AndroidManifest.xml里面注册SecondActivity,并把MainActivity的intent-filter添加到SecondActivity下面。   这时候,运行程序,就可以显示SecondActivity的内容了。



物联网 开发入门 教程

需要 登录 后方可回复, 如果你还没有账号请 注册新账号