AndroidStudio学习笔记-第一个安卓程序
要带一个本科生做一部分跟安卓有点关系的项目,于是趁着机会学习一下编写安卓程序。
第一篇材料来自谷歌官方,传送门: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学习笔记-第一个安卓程序的更多相关文章
- 七天从零基础学习android(2)--第一个安卓程序
在环境配置的那一部分,已经把基础的环境配置好了,接下来应该实现第一个安卓程序,就是著名的hello world 先在avd里面新建一个虚拟机,并且启动它 然后该虚拟机器能够在eclipse上正常识别 ...
- Lua学习笔记4. coroutine协同程序和文件I/O、错误处理
Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...
- Linux进程线程学习笔记:运行新程序
Linux进程线程学习笔记:运行新程序 周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下 ...
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- 微信小程序开发:学习笔记[7]——理解小程序的宿主环境
微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器
- Django学习笔记---第一天
Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...
- ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探
前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...
- 个人学习笔记:C语言程序结构
个人笔记:C语言程序 函数 语句 输入输出对象 标识符 关键字 函数 一个C语言源程序,是由一个或多个函数定义顺序组成的,其中必须有一个函数名为main的主函数.C语言源程序中的函数是指完成特定数据处 ...
随机推荐
- Singleton in C++11 style
#include <iostream> #include <memory> #include <mutex> class SingletonOld { static ...
- 一些简单的PGSQL 操作
1.jsonb字段的查询 enterprisearr 字段类型为jsonb,存储格式为["物流服务商","销售服务商","供应商"]. SE ...
- 关于oracle 10g creating datafile with zero offset for aix
参考文档: 1.创建oracle数据文件时需要注意的地方(OS Header Block) http://www.aixchina.net/Question/20406 2.oracle 创建数据文件 ...
- 关于imagic拼接透明背景图片的问题
目标: 为了做图片水印,需要水平拼接多个logo和文字... 之前用过imagick,所以继续使用. 第一个版本:实现了图片和文字的拼接,代码如下: package main import ( &qu ...
- A*寻路算法(JavaScript实现)
参考资料:http://www.cnblogs.com/zhoug2020/p/3468167.html http://www.cnblogs.com/lipan/arch ...
- Oracle 表空间
表空间 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 表空间是数据库的逻辑划分,一个表空间只能属于一个数据库.所有的数据库对象都存放在指定的表空间中.但主要存放的是表 ...
- mysql学习(1)-linux操作系统源码包安装
背景: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.22. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...
- redis集群安装
1.普通安装 安装环境 centos 6.8 1.安装必要包 yum install gcc yum -y install wget 2.下载解压 wget http://download.redis ...
- 安装swoole 扩展,在phpinfo中显示,但是php -m 中不显示的问题
步骤如下: 1 首先找到php.ini的目录:linux命令:find / -name php.ini 我的路径如下:
- Linux字符串截取和处理命令 cut、printf、awk、sed、sort、wc
1. cut [选项] 文件名 -f 列号 #提取第几列(分隔符默认为\t) -d 分隔符 #指定分隔符 例如:cut -f 2 a.txt #截取文件a.txt内容的第二列(列号从1开始) cu ...