萤火小屋

优律的知识库

  • 首页
  • 归档
  • 分类
  • 标签
  • 留言
  • 关于

  • 搜索
消息队列 RabbitMQ Redis 双指针 力扣 动态代理 Git YAML SpringBoot SpringMVC 回溯算法 分治算法 归并排序 快排 手撕 事务 MySQL索引 MySQL 小技巧 Spring Framework Spring 动态规划 Linux Android 贪心算法 操作系统 进程调度模拟 IPv6 数据库 计算机组成原理 计算机基础 栈 Java 静态路由 路由器 交换机 数字通信 网络工程 计算机网络 Web http 大学学习技巧 程序设计 算法

Android基础知识

发表于 2020-02-25 | 分类于 Android | 0 | 阅读次数 712

安卓的发展史


安卓每一代系统发布都会用甜点的名字命名,非常有趣,我收集了一些系统的名字参考一下。
  • Android 1.5 Cupcake(纸杯蛋糕):2009年4月30日发布。

  • Android 1.6 Donut(甜甜圈):2009年9月15日发布。

  • Android 2.0/2.0.1/2.1 Eclair(法式闪电泡芙/松饼):2009年10月26日发布。

  • Android 2.2/2.2.1 Froyo(冻酸奶):2010年5月20日发布。

  • Android 2.3.x Gingerbread(姜饼):2010年12月7日发布。

  • Android 4.0 IceCreamSandwich(冰激凌三明治):2011年10月19日在香港发布。

  • Android 3.0 Honeycomb (蜂巢):2011年2月3日发布。

  • Android 4.0 Ice Cream (冰激凌三明治):2011年10月19日发布。

  • Android 4.1 JellyBean(果冻豆):2012年6月28日发布。

  • Android 4.4 KitKat(奇巧):2013年11月1日发布。

  • Android 5.0 Lollipop(棒棒糖):2014年10月16日发布。

  • Android 6.0 Marshmallow(棉花糖):2015年9月30日发布。

  • Android 7.0 Nougat(牛轧糖):2016年8月31日发布。

  • Android 8.0 Oreo(奥利奥):2017年12月5日发布。

  • Android 9.0 Pie(派):2018年8月7日发布。

  • Android 10.0 :2019年9月3日发布。(不再采用甜点命名,正式版也不叫Q)


系统体系结构


  1. Applications
    核心应用程序的集合,所有安装在手机上的程序都在这一层。
  2. Applications Framework
    提供了各个应用程序所用的API,供开发者使用。
  3. Libraries + Android Runtime
    Libraries提供了C/C++环境为系统提供支持。Android Runtime提供了核心库,可让开发者用Java编写安卓应用程序。
  4. Linux Kernel
    安卓基于Linux,该层为硬件提供驱动。

Android system structure

Dalvik虚拟机简介


Dalvik是Google公司自己设计用于Android平台的虚拟机,它主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。

Dalvik Architecture

图:Dalvik虚拟机编译文件过程

项目目录简介(AS)


Android开发模式视角下的目录(非物理路径)

  1. /app/res应用资源
  2. /app/res/layout布局配置文件
  3. /app/res/drawable应用图片资源
  4. /app/res/mipmap应用图标资源
  5. /app/res/values软件用的字符串、尺寸、样式
密度范围值mipmap文件夹drawable文件夹
120~160dpimipmap_mdpimipmap_mdpi
160~240dpimipmap_hdpidrawable_hdpi
240~320dpimipmap_xdpidrawable_xdpi
320~480dpimipmap_xxdpidrawable_xxdpi
480~640dpimipmap_xxxdpidrawable_xxxdpi


图片资源


  • 用Java代码调用图片资源的方法
//调用mipmap文件夹中资源文件
getResources().getDrawable(R.mipmap.ic_launcher); 
//调用以drawable开头的文件夹中的资源文件
getResources().getDrawable(R.drawable.icon); 

  • 用xml布局文件调用图片资源
@mipmap/ic_launcher   //调用mipmap文件夹中的资源文件
@drawable/icon        //调用以drawable开头的文件夹中的资源文件



主题资源


  • 主题是包含一种或多种的格式化属性集合,在程序中调用主题资源可改变窗体的样式,对整个应用或某个Activity存在全局性影响。

  • 定义位置:/app/res/values/目录下的styles.xml文件中

  • 标签

<style></style>    <!--定义主题-->
<item></item>      <!--设置主题的样式-->

Android_style

  • 调用方式
<!--XML-->
android:theme ="@style/AppTheme"
//Java
setTheme(R.style.AppTheme);

样式资源


  • 样式:设置View的具体样式。
  • 定义位置:/app/res/values/目录下的styles.xml文件中
  • 标签
<style></style>  <!--定义样式-->
<item></item>    <!--设置控件的样式-->

  • 在XML文件中调用方法
    style="@style/textViewSytle"

布局资源


  • 布局资源通常用于搭建程序中的各个界面。
  • 定义位置:/app/res/layout/文件夹中
  • 调用方式:
  1. 通过Java代码调用布局资源文件
//在Activity的onCreate()方法中调用activity_main.xml布局资源
setContentView(R.layout.activity_main);

  1. 在XML布局文件中调用布局资源文件
<!--在XML布局文件中调用activity_main.xml布局资源-->
<include layout="@layout/activity_main"/>

字符串资源


  • 定义位置:/app/res/values/文件夹的strings.xml文件中
  • 编写字符串资源内容
<resources>
    <string name="app_name">字符串</string>
</resources>

  • 调用方式:
  1. 通过Java代码调用字符串资源
//在Activity的onCreate()方法中调用名为app_name的字符串资源
getResources().getString(R.string.app_name); 

  1. 在XML布局文件中调用字符串资源
<!--在XML布局文件中调用名为app_name字符串资源-->
@string/app_name

颜色资源


  • 定义位置:/app/res/values/文件夹的colors.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

  • 调用方式:
  1. 通过Java代码调用颜色资源
//在Activity的onCreate()方法中调用名为colorPrimary的颜色资源
getResources().getColor(R.color.colorPrimary);

  1. 在XML布局文件中调用颜色资源
<!--在XML布局文件中调用名为colorPrimary的颜色资源-->
@color/colorPrimary

尺寸资源


  • 尺寸资源:例如View的宽高值
  • 定义位置:/app/res/values/文件夹的dimens.xml文件中
  • 创建dimens.xml文件:
    右键单击values文件夹,依次选中New、XML、Values XML File,在弹出框中输入dimens
  • 编写尺寸资源
<resources>
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>
  • 调用方式
  1. 通过Java代码调用尺寸资源
//在Activity的onCreate()方法中调用名为activity_horizontal_margin的颜色资源
getResources().getDimension(R.dimen.activity_horizontal_margin);

  1. 在XML布局文件中调用尺寸资源
<!--在XML布局文件中调用名为activity_horizontal_margin的尺寸资源-->
@dimen/activity_horizontal_margin

  • Android支持的尺寸单位
单位名称解释
px(pixels,像素)每个px对应屏幕上的一个点
dp(Density-independent Pixels,设备独立像素)是一种与屏幕密度无关的尺寸单位
sp(scaled pixels,比例像素)主要处理字体的大小,可以根据用户字体大小首选项进行缩放
in(inches,英寸)标准长度单位
pt(points,磅)屏幕物理长度单位,1磅为1/72英寸
mm(Millimeters,毫米)屏幕物理长度单位


单元测试


  • 单元测试是指在应用程序开发过程中对最小的功能模块进行测试,可以在完成某个功能之后对该功能进行单独测试。

  • 单元测试分类:

    1. Android单元测试:连接Android设备、速度比较慢、适合需要调用Android API的单元测试。
    2. Junit单元测试:不依赖Android设备(在本地即可运行)、速度快、适合只对java代码功能进行的单元测试。
  • Android Studio 3.2版本在创建项目时,会默认在app/src/androidTest和app/src/test文件夹中创建Android单元测试类ExampleInstrumentedTest和Junit单元测试类ExampleUnitTest。

    • Android单元测试类ExampleInstrumentedTest
      • 使用@RunWith(AndroidJUnit4.class)注解ExampleInstrumentedTest类
      • @Test注解类中的方法
    • Junit单元测试类ExampleUnitTest
      • @Test注解类中的方法
  • ExampleInstrumentedTest.java类中的代码(Android单元测试)

package cn.itcast.helloworld;
@RunWith(AndroidJUnit4.class)  // 注解类
public class ExampleInstrumentedTest {
	@Test  // 注解方法
	public void useAppContext() {
		// Context of the app under test.
 		Context appContext = InstrumentationRegistry.getTargetContext();
		assertEquals("cn.itcast.helloworld", appContext.getPackageName());
		//期望两个参数值相等
	}
}

  • ExampleInstrumentedTest.java类中的代码(Junit单元测试
    )
package cn.itcast.helloworld;
public class ExampleUnitTest {
	@Test  // 注解方法
	public void addition_isCorrect() {
		assertEquals(4, 2 + 2);  // 期望两个参数值相等
	}
}


LogCat


  • LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息。
  • Log类所输出的日志内容分为六个级别。
级别Log类中的静态方法日志信息颜色
VerboseLog.v()黑色
DebugLog.d()蓝色
InfoLog.i()绿色
WarningLog.w()橙色
ErrorLog.e()红色
Assert(新版加入)Log.wtf()红色
  • LogCat的使用
Log.v("MainActivity", "Verbose");  //参数1:打印信息的标签。参数2:需要打印的信息
Log.d("MainActivity","Degug");
Log.i("MainActivity","Info");
Log.w("MainActivity", "Warning");
Log.e("MainActivity", "Error");
Log.wtf("MainActivity","Assert");
# Android
贪心算法
CentOS添加用户并赋予sudo权限
  • 文章目录
  • 站点概览
优律

优律

优律的知识库

83 日志
20 分类
44 标签
E-mail Twitter Instagram
Links
  • CZLisyx - 浮生志
  • Vedfolnir
0%
© 2019 — 2023 萤火小屋——优律的博客网站
网站已勉强运行 
Halo博客系统技术支持