论及每年的编程语言排行榜, Java 总是名列榜首,流行意味着好用,我们当了解之。 当今生活,最体现科技的地方便是电子产品。而电子产品中,我们接触最多、最离不开的便是手机。手机之所以成为“手机”,决定性因素便是里面的一个个程序。安卓手机受众最多,安卓开发使用最普及的便是 Java 语言。所以,我们需要学习 Java, 学习它最好的方式就是试着去做安卓开发。

本场 Chat 适合以下人群,若非,请绕道菜鸟编程、慕课网、网易公开课等平台。

  • 一枚萌新,对 Java 和 Android 开发不甚了解
  • 了解一下 APP 开发的流程,用到的工具
  • 学习一下 Java 语言
  • 自己想写一个实现特定功能的安卓小程序
  • 用惯了 Eclipse ,想转战 Android Studio

简介

论及每年的编程语言排行榜, Java 总是名列榜首,流行意味着好用,我们当了解之。 当今生活,最体现科技的地方便是电子产品。而电子产品中,我们接触最多、最离不开的便是手机。手机之所以成为“手机”,决定性因素便是里面的一个个程序。安卓手机受众最多,安卓开发使用最普及的便是 Java 语言。所以,我们需要学习 Java, 学习它最好的方式就是试着去做安卓开发。本场 Chat 适合以下人群,若非,请绕道菜鸟编程、慕课网、网易公开课等平台。

  • 一枚萌新,对 Java 和 Android 开发不甚了解
  • 了解一下 APP 开发的流程,用到的工具
  • 学习一下 Java 语言
  • 自己想写一个实现特定功能的安卓小程序
  • 用惯了 Eclipse ,想转战 Android Studio

主流的安卓开发环境有传统的 Eclipse 和新兴的 AS ( Android Studio )为什么要用 AS, 而不用 Eclipse 呢?因为谷歌宣布不再更新 ADT 了,并且官网也去掉了 Eclipse 的下载链接,开发者最后将都过渡到 Android Studio。爸爸都放弃养儿子,要养女儿了,作为路人甲,你又何必养虎为患呢。作为新手,直接用 AS 吧。

环境搭建

JDK 的下载安装配置

JDK( Java Development Kit ),从字面意思翻译过来就是 Java 开发的工具。可以这样理解 JDK 就是 Java,我们要写 Java 程序首先得要有它这个东西对吧?你要用 AS ,就必须先安装和配置好 JDK。所以我们要做的第一步就是从官网下载 JDK 安装到自己的电脑。分成以下几个步骤来执行。

1、如果你以前鼓捣过 Java,先把你电脑上原有的 JDK 卸载了,这个很重要,要不然对于萌新来说,后面的环境配置可能会出现问题。

2、从官网下载 JDK ,傻瓜式安装。

3、环境配置:

  • 新建一个系统变量(环境变量包含 Administrator 的用户变量和系统变量,环境变量窗口上方是用户变量,下方是系统变量,以后把你所有变量都配置在系统变量里),命名为 JAVA_HOME ,值是你的刚刚 JDK 的安装目录,比如 D:\Java\jdk-13.0.2。
  • 创建系统变量 CLASSPATH ,值是 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 。(注意最前面有一点,一个符号都不能少哦。)
  • 编辑系统变量 Path,添加两个路径, %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; ,并把它们移到最前面。
  • 在命令行中键入 java ,有正常的反应说明安装和配置成功。
AS 的下载安装
  • 下载安装:Android Studio 是开发 Android 应用程序的官方 IDE。在官网下载,傻瓜式安装。如果你是 Win 系统,下载 exe 格式的安装就可以。
  • SDK 的下载:SDK(software development kit) 是软件开发工具包,就是安卓系统、平台架构等的工具集合,如 adb.exe 。如果你在安装 AS 的时候,没有勾选 SDK,那么,当你安装完成,打开 AS 后,会提示 Unable to access Android SDK add-on list ,这时候可以点击 cancel 跳过,在下一个界面手动选择本地 SDK 目录就可以了,即在进入 AS 主界面后,再进行 SDK 相关的下载。SDK 相关组件下载过程可能比较漫长,耐心等待。

入门实例

下面通过一个极其简单的例子,我们来了解一下 AS 项目的文件架构和通过它开发 APP 的一个过程。

创建空 Activity

打开 AS,开始一个新的 AS 工程:

选择空 Activity:

起个名字,为了后面的代码能不用修改任何字符,直接黏贴使用,我们统一保持默认名称 My Application ,保存位置不能是盘的根目录,不能有中文字符。 Minimum API level 表示该应用支持的最低安卓系统版本,我们选择最低的一个,让它兼容百分百的设备。 instant apps 支持不要勾选,它表示“即用即毁”的一个应用场景。

Finish 之后,等它 Build 完之后,我们就看到了如下一个界面:

了解项目架构

乍一看,上图那个界面分成一块一块区域的,有点不知所以然,我不跟你解释,这每一块是干嘛的,完全没有必要。你多点几下自己就明白了,而且我说了你也记不住。重点看一下我用黄色框标出来的这一块,它列出了你这个项目的所有文件,用树型结构进行组织。

把树的每个分支展开看一看,好像东西还比较多,啥意思呢?首先要知道 Android studio 的项目架构,主要由两个文件组成。第一个是程序文件( MainActivity.java ),第二个是 .xml 文件( activity_main.xml ),其中程序文件主要进行逻辑程序的编写,比如说图形界面上某个控件点一下,要执行哪些相应操作,就写在程序文件里面。第二个文件相当于图形界面,我们可以进行一些控件的布局等操作,然后在程序文件中进行逻辑程序的编写和对控件的调用。当然,图形界面除了控件的可视化展示方式,也有代码式的文本展示方式,后面遇到再说。

项目架构当中,主要的文件都在 app 文件夹下。而 app 文件夹下,有 manifests、java、res (资源的英文缩写)三个主要的文件夹。在这个项目中,其实最重要的也就是如下图所示的三个文件, AndroidManifest.xml、MainActivity 和 layout 下的 activity_main.xml 。别的可以暂时先不用管它。

activity_main.xml 表示图形界面的绘制文件,MainActivity 表示图形界面一些操作的相应函数文件。AndroidManifest 官方解释是应用清单,这个文件中包含了 APP 的配置信息,系统需要根据里面的内容运行 APP 的代码,显示界面。解释起来比较复杂,你暂时只要知道它是配置用的。比如说,假如你的应用有个启动界面,想先进入启动界面,过几秒再进入主程序界面,要有这样一个顺序就可以在这里面配置。

Activity 怎么理解呢? 一个 Activity 其实就是一个界面和界面上的一些操作函数。打个比方,一个工程文件,就相当于你做的一个 PPT 。一个 Activity 可能就是里面的一页。每页 PPT 里面都有对应的文字、图像和控件布局。每页 PPT 可能都有精彩的动画、控件相应等等。不同的 PPT 之间可能都有超链接跳转等等。这里的一页 PPT 界面,就相当于 AS 中展示的 layout 中的界面。一页 PPT 里面的动画、控件响应,就对应于单个安卓界面相对应的 Java 文件。而不同 PPT 之间的跳转, PPT 整体风格,播放方式等的记录,就相当于 AndroidManifest 文件。

添加控件,界面设计

来,有了一个简单的理解之后,我们开始我们的 APP 编写之旅。首先点开界面文件,以 Design 标签页展示,拖动一个 button 控件过去。

选中这个控件,在最右侧的属性中,修改它的属性。ID 要好好起,这个很重要,因为它是连接界面文件,和 Java 文件的纽带。

对于这个点击的控件,我们给它赋予一个“bigger”的方法(函数),这个方法的定义待会儿会写在这个界面文件相对应的 Java 文件里面。

这是我们注意到组件树框框的组件名称旁边标有红红的感叹号,提示我们这个组件没有位置约束。没有约束是不行的,我们随便添加点约束。邮件点击组件树下的组件名称,添加水平约束和垂直约束。

用同样的方式,我们再添加一个 TextView 控件、 Button 控件和 PlainText 控件,这些控件什么意思,等 APP 做出来就知道了。

至此,界面部分的绘制就算完成了。点开 Text 标签页,可以看到其对应的绘制代码。

Java 程序文件编写

记得我们再界面控件设计的时候,定义了函数 bigger 和 change 还没有定义。 我们现在要在 界面文件对应的 Java 文件里面进行方法的定义。打开 MainActivity 文件,可以看到如下代码:

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}

相应地,我们将它改为:

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    int size=30;    public void bigger(View v){     // 放大按钮对应的 onclick 响应        TextView txv;         txv= (TextView) findViewById(R.id.textView);  // 根据 ID 找到对应的 text 对象        txv.setTextSize(++size);       // 修改对象的字符大小-size    }    public void change(View v){     // 另外一个按钮对应的 onclick 响应        EditText input= (EditText) findViewById(R.id.editText_input);  //还是根据 ID 找到对象,并进行接下来的操作        TextView text= (TextView) findViewById(R.id.textView);        text.setText(input.getText().toString());   // 设置字符    }}

添加的部分代码通俗易懂,我就不多加解释了。

真机模拟

可以用虚拟机和真机进行程序模拟,我这里选择真机模拟,因为我电脑空间不多了,不想下载镜像了。通过 usb 将手机连接到电脑上,打开手机的的“usb 调试”功能。

Build-Make Project ,链接编译。Run-Run 'app' ,在真机上安装运行程序,结果如下,可以把玩。

!在这里插入图片描述

添加启动界面

为了了解什么是 Activity,以及不同的 Activity 之间是怎么联系起立的,我们现在给我们的程序添加一个启动界面,以图片作为示例。

首先在 MainActivity 相同目录下添加一个空的 Activity ,命名为 SplashActivity,自动生成布局文件 activity_splash.xml。

找一张图片,丢到 res 的 drawable 文件夹下。

将其设置为 splash 布局文件的背景。

可以看到 splash 程序文件为:

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class SplashActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_splash);    }}

相应地,将他修改为:

package com.example.myapplication;import android.app.Activity;import android.os.Bundle;import android.content.Intent;import android.os.Handler;import android.view.Window;public class SplashActivity extends Activity{    private static int SPLASH_DISPLAY_LENGHT= 2000;    //延迟 2 秒    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getWindow().requestFeature(Window.FEATURE_NO_TITLE);//去掉标题        setContentView(R.layout.activity_splash);        new Handler().postDelayed(new Runnable() {            public void run() {                Intent intent = new Intent(SplashActivity.this, MainActivity.class);                startActivity(intent);                SplashActivity.this.finish();   //关闭 splashActivity,将其回收,否则按返回键会返回此界面            }        }, SPLASH_DISPLAY_LENGHT);    }}

注意到,我们这里将继承 AppCompatActivity 修改成了继承 Activity,这样能去掉启动界面的标题栏显示,这是由 AS 的特性决定的。修改的程序内容通俗易懂,可以读一读。表示进入 SplashActivity 布局界面延迟两秒后进入 MainActivity 布局界面。

现在我们需要设置程序启动的时候首先进入 SplashActivity 而不是默认的 MainActivity。这时候,就需要动 AndroidManifest 了。打开 AndroidManifest ,如下:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.myapplication">    <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/AppTheme">        <activity android:name=".SplashActivity"></activity>        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

相应地,将其修改为:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.myapplication">    <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/AppTheme">        <activity            android:name=".SplashActivity"            android:label="splash">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            android:name=".MainActivity"            android:label="@string/app_name" >        </activity>    </application></manifest>

编译,运行,成功。

打包 .apk 文件

到这,其实我们的 APP 已经写完了,我们可以将其打包成 APK 文件,这样发给别人,别人就可以安装运行了。就像在应用商店下载的一样。

在我的 E:\AS\app\build\outputs\apk\debug 下就生成了 APK 文件。

Tips 和后续支持

在这个过程当中,必然会遇到一些个人问题,学会思考,学会查找,这些问题都不是问题。另外,当你遇到一些莫名其妙的问题时,重启软件,设置重启机器,都可以试试。比如说,你有时候会遇到明明选择了控件,但是属性栏却说你没选择控件的问题,这时候,你重启一下 AS ,就能解决。

如果你在一步步做上述过程的时候遇到问题,而在网上又找不到解决方法,可以联系我,我的邮箱是 lusongcool@163.com 。

阅读全文: http://gitbook.cn/gitchat/activity/5e47ad411d77a21bea929dce

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App , GitChat 专享技术内容哦。

手把手教你快速入门 APP 的开发相关推荐

  1. 手把手教你快速入门知识图谱 - Neo4J教程

    手把手教你快速入门知识图谱 - Neo4J教程 前言 1. Neo4J简介 2. Neo4J安装 3. Neo4J使用 4. Cypher查询语言 5. Neo4J实战教程 1. 首先,我们删除数据库 ...

  2. neo4j 查询同一节点的两个上级_手把手教你快速入门知识图谱 - Neo4J教程

    前言 今天,我们来聊一聊知识图谱中的Neo4J.首先,什么是知识图谱?先摘一段百度百科: 知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程 ...

  3. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...

  4. 手把手教你快速搞定4个职场写作场景

    " [写作能力提升]系列文章: 为什么建议你一定要学会写作? 手把手教你快速搞定 4 个职场写作场景 5 种搭建⽂章架构的⽅法"免费赠送! " 一.前言 Hello,我是 ...

  5. 快速入门Web前端开发的正确姿势

    入门标准很简单,就一条:达到能参与 Web 前端实际项目的开发水平.请注意,是实际项目,这就需要了解如今的实际项目开发都用了哪些技术栈.HTML/CSS/JavaScript 这三大基础技术栈肯定是需 ...

  6. 手把手教你iPhone 3G手机软件开发

    手把手教你iPhone 3G手机软件开发 "iPhone 是一款革命性的.不可思议的产品,比市场上其它任何移动电话整整领先了五年,"苹果公司首席执行官史蒂夫·乔布斯如是说,&quo ...

  7. 《从零构建前后分离的web项目》:前端完善 - 手把手教你快速构建网站布局

    添砖加瓦 - 手把手教你快速构建网站布局 项目地址 本章源码地址 文章地址 本文为方便讲述重构去除了 Element.vux 库,用了最近比较火的 bulma 轻量.快捷.易读. 项目截屏 Layou ...

  8. 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下jsapi支付,场景就是在微信内打开某个页面,完成在线支付,同样一个网页,使用微信打开就是js ...

  9. 手把手带你快速入门超越GAN的Normalizing Flow

    手把手带你快速入门超越GAN的Normalizing Flow 作者:Aryansh Omray,微软数据科学工程师,Medium技术博主 机器学习领域的一个基本问题就是如何学习复杂数据的表征是机器学 ...

最新文章

  1. 剑指offer面试题6:重建二叉树
  2. 19 java程序员面试宝典视频课程之正则表达式
  3. python代码实现二叉树的序列化和反序列化
  4. Jvm 系列(六):Java 服务 GC 参数调优案例
  5. [正能量系列]赋闲的程序员(三)
  6. 猫猫学IOS(四十)UI之核心动画_抖动效果_CAKeyframeAnimation
  7. java dao层_JavaWeb Dao层架构设计
  8. DPM2012恢复单个Exchange2010用户邮箱
  9. python中要使用导入全部的是什么符号-在python格式字符串中使用标点符号
  10. linux自动化测试脚本,linux iperf3 一键自动化测试脚本
  11. 【新手入门篇】新浪微博应用开发之Java入门篇
  12. #!/usr/bin/env python作用
  13. erl_0016 《硝烟中的erlang》 读书笔记003 “error_logger 爆炸”
  14. 防止系统页面被加载进 iframe 子窗口
  15. nxlog管理配置linux,IIS服务器配置NXLog进行syslog转发(并解决GMT+8小时时差问题)...
  16. 手机的红外线功能有可能淘汰
  17. 西电2020计算机考研,西安电子科技大学研究生院,西电2020年考研成绩最新信息!...
  18. Maven_生成项目站点报告
  19. 优质的游戏-cc协议2d素材库素材推荐,不容错过
  20. 巴菲特五度减持中石油 共回笼资金30亿

热门文章

  1. mac笔记本常用快捷键
  2. 同一个网段win10远程linux,Win10专业版系统在局域网内远程另外一台电脑教程
  3. 系统集成项目管理工程师-法律法规与标准规范
  4. PS 学习笔记 16 -渐变工具组
  5. 嵌入式开发-服务器(一) MQTT服务器
  6. 谷粒商城开发踩坑及部分知识点大总结
  7. 有哪些好用的抠图网站?这种方法超好用
  8. java语言就业方向_Java就业方向有哪些?
  9. 数据技术之Hadoop(HFDS文件系统)
  10. java 初始化数组_Java中数组的初始化