要带一个本科生做一部分跟安卓有点关系的项目,于是趁着机会学习一下编写安卓程序。

第一篇材料来自谷歌官方,传送门:https://developer.android.com/training/basics/firstapp/index.html。由于官方例程写的很清楚了,基本上只要按着步骤就好了,所以不打算完全的复制粘贴,主要实践过程中我的一些理解和思考。

1. 创建新工程

一个安卓程序的层次结构为 Application -> many activities (可以理解为很多个界面) -> layout + title + menu

新建工程后AS会自动生成许多文件,重要的文件包括:

  1. app/src/main/res/layout/activity_my.xml 格式为XML的layout文件。AS支持直接通过text来修改显示界面,同时也提供了GUI,可以直接拖拽完成界面编辑。

  2. app/src/main/res/layout/content_my.xml 该文件被activity_my.xml调用。对layout的具体描述以及一些设置等。

  3. app/src/main/java/com.mycompany.myfirstapp/MyActivity.java jave核心代码,包括实际的activity的类及其类函数。当app运行时,该activity类运行并调用前述layout文件显示出来。

  4. app/src/main/AndroidManifest.xml app的基础特性的配置及包括哪些组成部分(activity)

  5. app/build.gradle gradle脚本用来编译和构建app,方便处理版本及依赖库等问题。

  6. app/src/main/res/ 改目录下包括app中所用到的所有资源:

    drawable-<density>/ 包括所有图片资源,除了启动图标

    layout 包括每个activity的layout文件

    menu 包括activity的menu文件

    mipmap 包括启动图标

    values 其他的xml文件,包括string和color的定义等。

2. 运行程序

程序既可以在具体的安卓设备上运行,也可以在模拟器上运行。

在具体的安卓设备调试之前,需要安装好设备的相关驱动,编译程序的时候要选择符合的版本号,不用怎么麻烦就可以运行hello world了!

3. 创建简单的用户界面

安卓app的图形界面的层次结构为 ViewGroup -> View. ViewGroup是不可见的容器,定义了其子view如何布局,布局是ViewGroup的子类。View对象是普通的UI部件。

  1. 新建一个linear layout

  2. 增加Text域和button

<EditText android:id="@+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />

    View的ID用来读取和操作对应的View对象

    View的hint为输入Text为空的时候的提示语句

  3. 增加String资源

    在res/values/strings.xml中增加名为edit_message和button_send的string

  4. 让输入框充满屏幕

给UI部件增加响应函数  

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />

增加onClick响应,sendMessage为该activity的类函数

在MyActivity.javaMyActivity类中增加对应类函数,该类函数需要是Public的,Void的返回值以及只有View一个参数

在类函数中创建一个Intent用来打开新的activity

public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
 startActivity(intent);
}

  intent能够携带类型为字典的变量extras,通过调用putExtra能够给字典赋值

在MyActivity中补充定义Extra_MESSAGE

public class MyActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";
...
}

4.创建另外一个Activity

  使用 AS创建另外一个blank Activity,编辑其java核心代码

  接收intent

    Intent intent = getIntent();

    String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

  在Activity中创建新的textView    

    TextView textView = new TextView(this);

    textView.setTextSize(40);

    textView.setText(message);

  在Activity中在布局中添加textView

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.content);

    layout.addView(textView);

恭喜,完成基本的教程!

AndroidStudio学习笔记-第一个安卓程序的更多相关文章

  1. 七天从零基础学习android(2)--第一个安卓程序

    在环境配置的那一部分,已经把基础的环境配置好了,接下来应该实现第一个安卓程序,就是著名的hello world 先在avd里面新建一个虚拟机,并且启动它 然后该虚拟机器能够在eclipse上正常识别 ...

  2. Lua学习笔记4. coroutine协同程序和文件I/O、错误处理

    Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...

  3. Linux进程线程学习笔记:运行新程序

    Linux进程线程学习笔记:运行新程序                                         周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下 ...

  4. ActionBarSherlock学习笔记 第一篇——部署

    ActionBarSherlock学习笔记 第一篇--部署          ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...

  5. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  6. 微信小程序开发:学习笔记[7]——理解小程序的宿主环境

    微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器

  7. Django学习笔记---第一天

    Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...

  8. ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探

    前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...

  9. 个人学习笔记:C语言程序结构

    个人笔记:C语言程序 函数 语句 输入输出对象 标识符 关键字 函数 一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数.C语言源程序中的函数是指完成特定数据处 ...

随机推荐

  1. Linux Windows 修改键盘映射

    Linux 下是编辑 ~/.Xmodmap 文件 remove Lock = Caps_Lockkeysym Escape = Caps_Lockkeysym Caps_Lock = Escapead ...

  2. css中clip-path属性的运用

    今天看到一位同学的需求,要在一个div中加一个小尖尖,对话时发的图片,旁边这个三角是怎么实现与图片的颜色一致,效果如下: 当然,解决这个问题有各种奇淫巧技,现在我们来看一个css属性clip-path ...

  3. UDP异步通信

    先看效果图 Server: using System; using System.Collections.Generic; using System.Text; using System.Net; u ...

  4. linux批量复制或删除同命名规则的文件

    如图所示,有多个不同后缀的文件,但他们的前缀都是"QC_TZ.impute." 此时想批量复制图中的文件的话,可以考虑用命令行 cp QC_TZ.impute.* /your/de ...

  5. 关于一个程序的编译过程 zkjg面试

    http://blog.csdn.net/gengyichao/article/details/6544266 一 以下是C程序一般的编译过程: 从图中看到: 将编写的一个c程序(源代码 )转换成可以 ...

  6. em 换算

    1 ÷ 父元素的font-size × 需要转换的像素值 = em值 http://www.w3cplus.com/css/px-to-em

  7. python学习之——splinter介绍

    Splinter是什么: 是一个用 Python 编写的 Web 应用程序进行验收测试的工具. Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL,然后你所开发的模拟的任何行为,都会 ...

  8. configparser配置文件操作

    configparser 模块用于对配置操作  官方文档地址https://docs.python.org/3/library/configparser.html 导入configparser模块 i ...

  9. 中兴MF667S WCDMA猫Linux拨号笔记

    公司最近有个国外有个项目需要用到WCDMA猫,网上简单选型了一下决定使用ZTE的型号MF667S的猫,本以为在Linux下拨号是比较简单的(之前有两款3G猫的调试经验),估计半天能搞定,结果折腾了一周 ...

  10. 在CMMI推广过程中EPG常犯的错误(转)

    本文转自: http://developer.51cto.com/art/200807/86953.htm 仅用于个人收藏,学习.如有转载,请联系原作者. ---------------------- ...