Android笔记1
条评论Android 开发
Android SDK版本
| Android版本号 | 对应API |
|---|---|
| Android 13 | 33 |
| Android 12 | 31 |
| Android 11 | 30 |
| Android 10 | 29 |
| Android 9 | 28 |
| Android 8 | 26/27 |
| Android 7 | 24/25 |
| Android 6 | 23 |
| Android 5 | 21/22 |
| Android 4.4 | 19/20 |
DEBUG
Android采用Log工具打印日志,它将各类日志划分为五个等级:
- Log.e:表示错误信息
- Log.w:表示警告信息
- Log.i:表示一般消息
- Log.d:表示调试信息,如在程序中插入一些变量的打印,方便调试
- Log.v:表示冗余信息
设备与AndroidStudio使用ADB(Adroid Debug Bridge)连接
Android开发语言
- Java
- Kotlin
APP 工程目录结构
APP工程分为两个层次
- 项目
- 模块:模块依附于项目,每个项目至少有一个模块
一般意义上的“编译运行APP”指的是运行某个模块,而非整个项目,模块对应了实际的APP。
APP项目
app
manifests
该目录下面只有一个AndroidManifest.xml文件,它是APP的运行配置文件。
每个应用的根目录中必须包含一个AndroidManifest.xml文件,并且文件名一模一样,系统根据里面的内容运行APP的代码,显示界面。
1 |
|
android:allowBackup:是否允许应用备份。允许用户备份系统应用和第三方应用的apk包和应用数据,以便在刷机或者数据丢失后恢复应用,用户可通过adb backup和abd restore来进行对应用数据的备份和恢复。为true表示允许,false表示不允许。android:icon:指定APP的默认图标。android:label:指定APP名称。android:roundIcon:指定APP圆角图标。android:supportsRtl:是否支持从右往左的文字排序android:theme:指定APP显示风格
java
该目录下有三个com.example.myapp包,其中第一个包存放当前模块的java源代码,后面两个包存放测试用的Java代码。
- Activity是一个应用程序组件,提供一个屏幕,用户可以利用它完成某项任务。
res
该目录下有4个子目录,存放当前模块的资源文件
- drawable:存放图形描述文件与图片文件
- layout:存放APP页面的布局文件
- mipmap:存放APP的启动图标
- values:存放一些常量定义文件
strings.xml:字符串常量dimens.xml:像素常量colors.xml:颜色常量styles.xml:样式风格常量
Gradle Scripts
Gradle是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的差异管理等工作。
build.gradle:该文件分为项目级与模块级两种,用于描述APP的编译规则。proguard-rules.pro:该文件用于描述Java代码的混淆规则gradle.properties:该文件用于编译工程的命令行参数,一般无需改动。settings.gragle:该文件配置了需要编译哪些模块。初始化内容include’:app’,表示只编译app模块。local.propeties:项目的本地配置文件,它在工程编译时自动生成,用于描述开发者计算机的环境配置,包括SDK本地路径、NDK的本地路径。
build.gradle
项目级别的build.gradle指定了当前项目的总体编译规则。
模块级别的build.gradle对应于具体模块,每个模块都有自己的build.gradle,它指定了当前模块的详细编译规则。
1 | android { |
每个版本的AndroidStudio都有对应的Gradle版本,只有二者的版本正确对应,APP工程才能成功编译
Activity的创建与跳转
创建新的APP页面
在layout目录下创建XML文件
\src\main\res\layout\activity_user.xml1
2
3
4
5
6
7
8
9
10
11
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/page1_name"/>
</LinearLayout>创建与XML文件对应的Activity即Java代码
\src\main\java\com\example\myapplication\UserActivity.java1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16package com.example.myapplication;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class UserActivity extends AppCompatActivity {
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user);
}
}在AndroidManifest中注册配置Activity
\src\main\AndroidManifest.xml1
<activity android:name=".UserActivity"/>
在指定Activity中编写代码跳转到该页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = findViewById(R.id.tv);
tv.setText("你好,世界!");
Button bv = findViewById(R.id.button);//获取ButtonView
//为Button设置一个点击事件监听
bv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, UserActivity.class);
startActivity(intent);
}
});
}
}
快捷生成页面
右键点击:arrow_right:new:arrow_right:Activity:arrow_right:EmptyActivity
通过快捷方式可以一键生成Activity与对应的Layout文件
Android简单控件
文本
设置文本值
设置值文本有两种方式
- 在Layout文件中通过属性
android:text设置 - 在Activity文件中通过调用视图对象的
setText方法设置
在strings.xml中定义的文本可以在Layout和Activity文件中使用,当需要修改时直接修改strings.xml就可以了
Layout中使用android:text="@string/name"引用;Activity中使用R.string.name引用
\src\main\res\values\strings.xml
1 | <resources> |
\src\main\res\layout\activity_text_view.xml
1 |
|
\src\main\java\com\example\chapter03\TextViewActivity.java
1 | public class TextViewActivity extends AppCompatActivity { |
设置文本大小
设置文本大小有两种方式:
- 在Activity文件中通过属性
android:textSize指定文本大小- px:像素,分辨率越高每个单位长度所含的像素点就越多,屏幕就越清晰
- dp:设备独立像素,dp与屏幕分辨率无关,只与屏幕尺寸有关,相同尺寸的屏幕其每dp的物理长度是相等的。
- sp:sp与dp类似,sp专门用来设置字体大小,会随着系统字体大小而改变。
- 在Layout文件中通过调用视图对象的
setTextSize方法指定文本大小
dpi(像素密度):
dpi指的是屏幕上每英寸(1英寸=2.54厘米)距离中有多少个像素点
以一块4.95英寸(对角线长度),分辨率为1920*1080的屏幕为例:
dpi计算:
- 计算对角线像素数量:1920^2+1080^2=2202^2
- 计算dpi:2202/4.95=445
- 得到设备的dpi为445(每英寸包含445个像素点)
density(密度):
density指每平方英寸(2.54^2平方厘米)中含有的像素点
dpi为445,则density为445^2=198025。
dip/dp(设备独立像素)
dpi是开发中使用的长度单位之一,它最后仍然需要转换为px
1px=1dip*dpi/160
对于相同分辨率的屏幕,尺寸越大,同pd的组件占用的屏幕比例越小
相同尺寸的屏幕,即使分辨率不同,同pd的组件占用屏幕比例也相同
\src\main\res\layout\activity_text_size.xml
1 | <LinearLayout |
设置文本颜色
在XML文件中通过属性
android:textColor指定文本颜色,色值由透明度alpha和RGB联合定义。色值有八位十六进制数和六位十六进制数两种形式,如色值
FFEEDDCC中FF表示透明度,EE表示红色度,DD表示绿色度,CC表示蓝色度。\src\main\res\layout\activity_text_color.xml
1 | <LinearLayout |
\src\main\java\com\example\chapter03\TextColorActivity.java
1 | public class TextColorActivity extends AppCompatActivity { |
