安卓开发初解
下载和创建新项目的一些问题
开发工具:android studio
开发语言:java8
1)创建项目中一些常规设置和界面使用问题
在第一次创建项目的时候原来的版本都是使用“Empty Activity”模板,但是2024.1(最新版)的是使用“Empty ViewsActivity”模板来创建项目。
如果不是,就不会出现语言选择界面
创建项目之后为了便于管理,我们在项目视图选择“Android”
2)第一次加载项目的时候下载gradle文件特别慢的问题
解决方式:从国内镜像中下载压缩包放到软件默认目录
https://mirrors.cloud.tencent.com/gradle/
下载完成之后还要加载一些文件,第一次特别慢大概还是需要半个小时左右。(但是之后的项目会特别快)
3)一些下载上的问题
- JDK下载,并配置环境变量
- 下载Android的SDK,在Android Studio安装包里面会有
- 在Android Studio里面下载手机虚拟机,否则没有下载的目标
项目文件讲解
AndroidManifest.xml :配置清单文件,为安卓系统提供应用相关的有用信息(包括活动 [activity],服务[Service],广播…)\
相当于springboot里面的pom文件和yml文件
app内外的build.gradle
文件:配置了项目运行的各种环境、项目依赖关系(本地依赖、库依赖、远程依赖)等
.gradle
: 存放已经下载的gradle 版本
.idea
:是android studio生成的一个文件
设计软件进入的闪屏界面
SplashActivity.java文件
package com.example.myappdesign;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
// handle的作用:主要用于处理异步消息
private Handler handler = new Handler(Looper.getMainLooper()){
public void handleMessage(Message msg){
};
};
// 用一个线程转到跳转到主页面的逻辑
private Runnable runnableToMainActivity = new Runnable() {
@Override
public void run() {
toMainActivity();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
handler.postDelayed(runnableToMainActivity,3000);
}
// 具体的跳转到主页面逻辑 (使用了intent对象和startActivity方法)
private void toMainActivity(){
// 打印日志信息
Log.d("SplashActivity","toMainActivity()");
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
// 防止内存泄漏
handler.removeCallbacks(runnableToMainActivity);
}
}
设计页面切换的步骤
- 设计并创建页面
- 设计后端跳转逻辑
- 定义一个线程继承自runnable接口,并使其调用跳转函数
- 设计跳转函数(创建intent对象;传入当前页面和跳转后的页面;启动跳转页面的Activity)
- 摧毁线程(防止内存泄漏)
- 在manifests文件中注册对应的两个Activity并修改对应的启动Activity
注意
android
项目的res
目录下有许多的mipmap
文件其中的后缀主要是指低分辨率、中分辨率、高分辨率等等,可以将图片放在对应的位置。
Android及界面的相关
一些布局相关术语
密度无关像素(dp):灵活尺寸的单元,可在任何屏幕上采用统一的尺寸。它们基于屏幕的物理密度。这些单位相对于 160 **dpi(每英寸点数)**屏幕确立,在该屏幕上 1 dp 大致等于 1 px。
导航栏:屏幕底部显示了一个 Android 系统栏。让用户可以通过手势或点按按钮在设备中导航
可放缩像素:可缩放的像素与 dp 具有相同的功能,但适用于字体。sp 的默认值与 dp 的默认值相同。Android 系统会根据设备和用户在其 Android 设备的 设置 应用中设定的偏好设置计算要使用的实际字体大小。
状态栏:Android 系统栏显示在屏幕顶部。它包含通知图标和系统图标。
任务:用户为达成目标而进行的一系列活动。这些 activity 按照每个 activity 的打开顺序排列在一个堆栈中,称为“返回堆栈”。详细了解返回堆栈生命周期。
宽高比:为了保持布局的一致性,请为图片、Surface 和屏幕尺寸等元素使用一致的宽高比。(ge.16:9,3:2,4:3,1:1,34,23)
基调:颜色的亮度或亮度。描述数字颜色值所代表的光照强度
另外对于手机设备有:刘海屏、无边框边衬区、边缘显示屏、软件键盘和系统栏等界面部分
Android界面布局规范
系统栏
简介:状态栏和导航栏(统称为系统栏)会显示电池电量、时间和通知提醒等重要信息,并提供来自任何位置的直接设备互动体验。详细了解系统栏。
导航区域
简介:导航表示允许用户在应用内导航、访问重要操作或跨 Android 平台导航的不同功能
身体部位
简介:正文区域用于存放屏幕内容。正文内容由其他分组和布局参数组成。它必须在导航和系统栏区域下继续运行
使用外边距和列来实现视觉保护
外边距用于提供屏幕和内容的左侧边缘和右侧边缘的间距。较小尺寸的标准外边距值为 16 dp,但外边距应进行调整以适应较大的屏幕。应用的正文内容和操作必须在这些外边距范围内并与外边距对齐
使用容器对元素进行视觉分组(略)
内容定位
常见的方式有重力、间距、缩放
Gravity标准
1、2、3、4分别展示了相对父容器中心位置、水平顶部+中心位置、水平底部+左对齐、水平底部+右对齐
扩缩
缩放对于适应动态内容、设备屏幕方向和屏幕尺寸至关重要。需要慎用,以防图片、表格失真。
对齐方式
通过像元素一样使用不一致的间距破坏可读性,这可能会使设计显得混乱。
组件布局
Feed布局
简介:Feed 布局能够以可配置网格的形式排列等效的内容元素,以便用户快速、方便地查看大量内容。(请参阅有关在集合中使用卡片的 Material 3 准则。)Feed 可以是紧凑型显示屏上的基于列表或网格的配置,通常位于卡片或功能块中。内容可以是动态的,这意味着内容是从动态外部来源(例如 API)“馈入”的。
实现:您可以在 Compose 中使用延迟列表或延迟网格实现 Feed 布局,也可以使用 RecyclerView
或 CardView
在 View 中实现
eg.辅助窗格布局
相对布局
简介:
输入、内容或其他操作可以相对于彼此显示,也可以受限于父级容器。布局的自定义程度更高,但请务必遵循一致的分组、列和间距。
布局还可以使用布局类型的组合。例如,您可以将轮播界面或水平滚动条与垂直卡片配对。或者,您也可以显示包含纵向列表数据的自定义图表。
eg.身份验证的布局
全屏布局
简介:全屏布局是另一种常见布局,在沉浸模式下使用。
实现:如果您使用的是 View 而不是 Compose,则可以使用 ConstraintLayout
根据同级视图和父布局之间的关系来布置视图,从而支持大型和复杂的布局。ConstraintLayout
可让您完全通过拖放操作进行构建,而无需使用布局编辑器修改 XML。详细了解如何使用布局编辑器构建界面。
网格和单位
密度无关像素 (dp) 和可缩放像素 (sp) 对于构建布局和呈现能够针对各种 Android 设备屏幕密度、尺寸类别、外形规格和宽高比提供统一响应的字体至关重要
注意:
- 如果使用基线网格,请遵循 4 和 8 的测量值。
- 以 dp 和 sp (而不是像素)表示规范。
- 导出所有分桶的位图/光栅图形。
- 采用响应式思维进行设计,并考虑不同的大小类别、分辨率和宽高比。
dp的计算公式如下:
dp =(以像素为单位的宽度 * 160)/屏幕密度
基准网格
Android Studio里面没找到