(第六讲)分析你的第一个 Android 程序 3

Posted 烽哥带你学Android

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(第六讲)分析你的第一个 Android 程序 3相关的知识,希望对你有一定的参考价值。

今天开始我们一起分析第一节创建的程序是怎么运行起来的,还会讲 Java 的 for 循环。有人想学头皮护理???那也满足你们。不知道之前讲的项目结构有没有记得住,或者是直接看蒙了?不过记不记得住都没关系,这并不影响你接下来的学习。随着学习的深入,你反复地和我一起用,自然就记住了。

1x0 从 androidManifest.xml 入手

我们已经知道了项目的结构,那么下一步就按照应用程序运行的流程来分析吧。你在手机上点击 apk 文件后,会打开软件包安装程序。软件包安装程序会读取 apk 中的 AndroidManifest.xml 文件,从里面分析出软件的名字 版本还有各种权限,然后展示给用户,用户确定安装后就会交给框架程序来真正完成安装。那我们就从 AndroidManifest.xml 开始分析吧。打开上次的项目,找到 AndroidManifest.xml 。下面两个动图分别演示 Android Studio 和 AIDE 的打开过程。

注:Android studio 请切换到 project 视图。具体操作见第四节。

(第六讲)分析你的第一个 Android 程序 3

我们可以从 AndroidManifest.xml 里看到这些代码:

由于创建项目时每个人输入的项目名字以及主活动的名字可能不同,这里的代码可能会与你看到的有轻微差异,这时就需要触类旁通一下了。

 
   
   
 
  1. <activity

  2.            android:name=".MainActivity"

  3.            android:label="@string/app_name" >

  4.            <intent-filter>

  5.                <action android:name="android.intent.action.MAIN" />

  6.                <category android:name="android.intent.category.LAUNCHER" />

  7.            </intent-filter>

  8. </activity>

这些代码注册了一个活动:MainActivity。所有的活动必须在 AndroidManifest 中注册。还记得之前讲的活动吗?所有 Android 应用程序中你能看到的东西都是放在活动中的。你运行程序之后看到的 helloworld 就是在这个活动中。其中 intent-filter 标签中的 告诉系统这个是主活动。在桌面点击图标,就会启动带有这两个标签的活动。说来说去,好像 helloworld 这几个字是 MainActivity 来显示在界面上的。我们快去看看。

1x1 初探活动

我们打开项目目录下的 "\app\src\main\java\com\github\myapplication\MainActivity.java" 。其中 "\com\github\myapplication\" 是你新建项目时输入的包名。

下面两个动图分别演示 Android Studio 和 AIDE 的打开过程。

注:Android studio 请切换到 project 视图。具体操作见第四节。

(第六讲)分析你的第一个 Android 程序 3

(第六讲)分析你的第一个 Android 程序 3

映入眼帘的是这些代码。注:由于新建项目时大家输入的主活动名称可能不同,编译器版本可能不同,导致代码可能有轻微差异,大家请触类旁通。

 
   
   
 
  1. public class MainActivity extends Activity

  2. {

  3.    @Override

  4.    protected void onCreate(Bundle savedInstanceState)

  5.    {

  6.        super.onCreate(savedInstanceState);

  7.        setContentView(R.layout.main);

  8.    }

  9. }

首先可以看到....嗯...根本看不懂,因为我还没讲 Java 的类的概念。但是我还是要说一说。我就那么一说,你就那么一听,很快我们就会讲 Java 的类和对象,到时候会那他当例子来讲解,所以莫慌,我在的。咳咳,开始白话了:MainActivity 类是继承(extends)自 Activity 父类的。你如果用的是 Android Studio 生成的项目的话,看到的应该是

 
   
   
 
  1. public class MainActivity extends AppCompatActivity

其中 AppCompatActivity 是一种新的用来替换 " Activity " 的类,具有 " Activity " 的所有特性,而且为 MD 质感设计提供 API支持。Activity 是所有活动的基类,上面说的 AppCompatActivity 也是他的子类。你可以这么理解,Activity 是爸爸名字叫活动,只有他的孩子继承(extend)了他,才是活动,才具有了活动的特性。然后向下接着看,有一个 onCreate() 方法。几乎所有的活动都会重写 onCreate() 方法,系统在创建活动(Activity)时会调用 onCreate() 方法。其中只有两行代码,并没有我们要找的 helloworld 字样,那么他到底在哪呀?其实 Android 的开发是逻辑和视图分离的,视图是被写在布局里的。在 onCreat() 方法里调用了 setContextView() 方法,就是给当前活动引入一个 main 布局,那么 helloword 就一定是在里面了。

注意:上一段中的 “基类”,“子类” ,“继承”,“重写方法”,“方法” 等都是 Java 面向对象中的术语,关于 Java 的面向对象,近几期就会讲解。

1x2 初探布局

打开项目目录下的 "\app\src\main\res\layout\main.xml" 文件,其中 "main" 是你新建项目最后一步输入的,估计你已经忘了当时选的是什么了。但这个目录下现在应该只有一个文件,就是他了。Android Studio 默认是 activity_main ,至于 AIDE ,不支持在创建时自定义,默认就是 main.xml 。布局文件都是放在 res/layout 目录下的,layout 文件夹下的文件就都是布局。下面两个动图分别演示 Android Studio 和 AIDE 的打开过程。

注意:Android Studio 打开布局之后默认是设计 (design) 模式,因为我们是初学者,应该了解本质,所以请点击左下角的Text 标签切换到代码视图。

(第六讲)分析你的第一个 Android 程序 3

(第六讲)分析你的第一个 Android 程序 3

映入眼帘的是如下代码

 
   
   
 
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  2.    android:layout_width="match_parent"

  3.    android:layout_height="match_parent"

  4.    android:gravity="center"

  5.    android:orientation="vertical"

  6.    >

  7.    <TextView

  8.        android:text="@string/hello_world"

  9.        android:layout_width="wrap_content"

  10.        android:layout_height="wrap_content" />

  11. </LinearLayout>

看不懂?没关系,以后会重点讲的,反正我们看到 hello word 了。让我们来改一下,就改成 "我学会Android 编程了!" 吧。

修改后的代码如下:

 
   
   
 
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  2.    android:layout_width="match_parent"

  3.    android:layout_height="match_parent"

  4.    android:gravity="center"

  5.    android:orientation="vertical"

  6.    >

  7.    <TextView

  8.        android:text="我学会Android 编程了!"

  9.        android:layout_width="wrap_content"

  10.        android:layout_height="wrap_content" />

  11. </LinearLayout>

下面两个动图分别演示 Android Studio 和 AIDE 的修改过程。为了录制效果,这里都是粘贴的,大家不要意外为什么字突然变了。

(第六讲)分析你的第一个 Android 程序 3

我们小小的分析下,我们在一个 TextView 里找到了 helloword 字样。其实就是通过 android:text="Hello World" 来定义的。

今天 Android 部分就这样吧,我们再来学一些 Java 基础。

2x0 Java 中的 for 循环

不知道你们有没有忘掉 while 循环,忘了的话快去第五讲复习一下!今天讲的 for 循环更加简洁,大部分情况下,for 循环可以替代 while 循环,do while 循环。for 循环的基本语法如下:

 
   
   
 
  1. for ([循环初始化语句];[循环条件];[迭代语句]){

  2.    循环体

  3. }

  4. //[]内的为可省略

程序执行 for 循环时,先执行循环初始化语句,初始化语句只在循环开始前执行一次。每次执行循环体之前,先计算循环条件的状态,如果是 true 则执行循环体,循环体执行之后执行迭代语句,用于更新循环条件,因此对于 for 循环而言,循环条件总比循环体多执行一次,因为最后一次执行循环条件的状态是 false ,将不再执行循环体。来看下面的例子:

 
   
   
 
  1. //循环的初始化语句,循环条件,迭代语句

  2. for (int i = 0; i < 10; i++){

  3.    System.out.println(i);

  4. }

  5. System.out.println("循环结束!");

在上面的循环语句中,for 循环的初始化语句只有一个,循环条件也是一个简单的 boolean 表达式。运行流程就是:

  • 定义整型变量 a 并赋值为 0

  • i 小于 10 成立

  • 输出 i 的值

  • i++

  • i 小于 10 成立

  • 输出 i 的值

  • i++i 小于 10 成立

  • 输出 i 的值

  • i++

  • 。。。。。。

  • i 小于 10 不成立

  • 输出 循环结束

值得一提的是,循环的初始化语句,循环条件,迭代语句都可以省略:下面的语句语法绝对是对的,但是是个死循环

 
   
   
 
  1. for (;;){

  2.    System.out.println("这是个死循环");

  3. }

下面的语句也可以运行,但是及其不推荐修改循环计数器(也就是循环变量,就是上面定义的 int a = 0;),这样会导致程序可读性下降。

 
   
   
 
  1. int i = 0

  2. for (; i < 10;){

  3.    i++;

  4.    System.out.println(i);

  5. }

  6. System.out.println("循环结束!");

  7. //非常不推荐在循环中修改循环计数器。

3x0 头皮护理 & 总结

插一句题外话,写教程真的很累,我周末一方面是为了休息休息,另一方面也是继续学习提高自己,所以周末不更新。谢谢大家的理解。

ps:一下护发方法收集自互联网。

1.洗发之后一定要上护发素,并且不要选择洗护二合一的洗发水。护发素不要涂膜在头皮上。

2.上护发素或者发膜的时候,注意先用毛巾擦干头发上的水分。

3.尽量自然风干头发,避免使用电吹风。

4.不要熬夜,早睡、睡充分。

你们吵着要头皮护理的,这就来了。其实之前我也不信邪,但是,自从我开始写教程,我真的开始掉头发了。

今天我们粗略分析了app的 AndroidManifest.xml 还有活动,布局。你一定累坏了,但是收获满满,不是吗?

欢迎关注我的公众号,

每日一文,轻轻松松带你入门 Android 开发


以上是关于(第六讲)分析你的第一个 Android 程序 3的主要内容,如果未能解决你的问题,请参考以下文章

Android 第六讲 广播接收器和服务

机器学习中使用的神经网络第六讲笔记

XML与Web前端开发技术第六讲即将到来!

第六讲抽象工厂模式

第六讲 缺陷管理工具

雷达原理与系统 第六讲 雷达发射机主要部件与应用