Loading... # Android App开发基础 ## APP的开发特点 **App开发测试的方法**: 1. Android Studio创建内置的模拟器 2. 真实手机测试运行: * 使用数据线把手机连接到计算机上 * 在计算机上安装手机的驱动程序 * 打开手机的开发者选项并启用USB调试 * 将连接的手机设为文件传输模式,并允许计算机调试 * 手机要能正常使用 **APP两大技术路线** * 原生开发:在移动平台上利用官方提供的编程语言(Java、kotlin)、开发工具包(SDK)、开发环境 * 混合开发:结合原生与H5技术开发混合应用,即将部分APP页面改成内嵌的网页,这样无需升级APP只需覆盖服务器上的网页,即可动态更新APP页面 开发语言 * java:主要编程语言 * kotlin:谷歌力推,兼容java * c/c++:前两者属于解释型语言(运行时才把程序翻译为机器语言,执行效率偏低),而c/c++属于编译型语言,执行效率更高,借助JNI(Java原生接口),Java代码可以调用c/c++程序(封装好Java方法调用即可) * xml:可扩展标记语言,类似于html利用各种标签来表达页面元素,以及元素之间的层级关系及其排列组合。每个xml标签独立的控件对象,标签内部的属性以“android:”开头,表示标准的android属性 **APP连接的数据库**:android内置SQLite数据库,语法类似mysql,但实际上后端(服务器端)可以用别的数据库 ![image-20231009204413594.png](http://xherlock.top/usr/uploads/2023/10/986970895.png) ## APP的工程结构 ### App工程目录结构 分为两个层次:项目和模块,模块依附于项目,每个项目至少有一个模块,也能拥有多个模块 一般“编译运行App”指的是运行某个模块 如下图,项目为My Application,app是模块,其下又有manifest子目录(下面只有AndroidManifest.xml,app的运行配置文件)、java子目录、res子目录 ![image-20231009205342068.png](http://xherlock.top/usr/uploads/2023/10/3819553708.png) gradle scripts下主要是工程的编译配置文件 * build.gradle:描述App工程的编译规则 * proguard-rules.pro:描述java代码的混淆规则 * gradle.properties:用于配置编译工程的命令行参数,一般无需改动 * settings.gradle:配置了编译哪些模块 * local.properties:项目的本地配置文件,工程编译时自动生成,用于描述开发者计算机的环境配置,包括SDK、NDK的本地路径 ### AndroidManifest.xml 根节点:manifest,它的package属性指定了app的包名,其下有个application节点,包含如下属性 * android:allowBackup -- 是否允许应用备份 * android:icon -- 指定App再手机屏幕上显示的图标 * android:label -- 指定App在手机屏幕上显示的名称 * android:roundIcon -- 指定App的圆角图标 * android:supportsRtsl -- 是否支持阿拉伯语/波斯语这种从右往左的文字排列顺序,true为支持 * android:theme -- 指定app的显示风格 此外还有个activity节点再application下,是活动页面的注册声明,只有正确配置其才能在运行时访问对应的活动页面 ## App的设计规范 xml文件描述app界面:可以很方便地预览界面效果 利用XML标记描绘应用界面: ~~~xml <TextView android:id="@+id/tv_hello" android:layout width="wrap content" android:layout height="wrap content" android:text="Hello World!" /> ~~~ 由于TextView只是个文本视图,标签头和尾之间不会插入其他标记,所以合并,以“/>”结尾;但并非所有都可简化 根节点必须配备“xmlns:android="http://schemmas.android.com/apk/res/adnroid"”,表示指定XML内部的命名空间,有了命名空间,android studio会自动检查各节点的属性名称是否合法,若不合法就提示报错 但是使用XML无法动态刷新某个控件,表达不了复杂业务逻辑,因此需要使用Java 如下为android studio自动生成的空控件java代码 ~~~java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 表示直接引用了布局文件的名字activity_main,可以通过调整选择展示的xml文件 } } ~~~ 添加一些Java逻辑代码,运行后文字变化 ~~~java import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv_hello = findViewById(R.id.tv_hello); tv_hello.setText("你好!"); } } ~~~ ## App的活动页面 ### 创建新的App页面 1. 创建XML文件:layout下new-xml-layout xml file 2. 创建Java代码:java目录下第一个包右键-new-java class 3. 注册页面配置:打开AndroidManifest.xml,在application节点内部补充 ~~~xml <activity android:name=".java文件名"/> ~~~ **快速生成法**:java目录下包名右键-new-activity-empty activity,填写java类名和xml文件名,就能自动完成页面创建 ### 跳转另一个页面 ~~~java startActivity(new Intent(MainActivity.this, Main2Activity.class)); //从MainActivity跳转到Main2Activity ~~~ 下面写一个实验:App启动后首页3s后跳转 ~~~java package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv_hello = findViewById(R.id.tv_hello); tv_hello.setText("你好!"); } @Override protected void onResume() { super.onResume(); goNextPage(); } private void goNextPage() { TextView tv_hello = findViewById(R.id.tv_hello); tv_hello.setText("你好!3s后起飞!"); new Handler().postDelayed(mGoNext, 3000); } private Runnable mGoNext = new Runnable() { @Override public void run() { startActivity(new Intent(MainActivity.this, Main2Activity.class)); } }; } ~~~ 最后修改:2024 年 01 月 04 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏