这行代码没BUG

一个相信努力可以改变人生的人,我相信一切的上进行为都是值得的,至少可以让我看见更大的世界。

初识Android

初识Android

认识Android

Android本意指”机器人“,Google公司将Android的标识设计为一个绿色的机器人,表示Android系统符合环保理念。它是一个轻薄短小、功能强大的移动系统,是为手机打造的开放性系统。

Android简介

Android操作系统最初是由安迪·鲁宾开发的。2005年被Google公司收购,并于2007年11月5日正式向外界展示了这款系统。

Android系统架构

Android的系统架构采用了分层架构的思想。从上到下共包括4层,分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。

应用程序层

该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。

应用程序框架层

该层是Android应用开发的基础,开发人员大部分情况下是在和它打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务10个部分。在Android 平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户便可以方便地替换平台本身的各种应用程序组件。

运行库和Android运行时

系统库包括9个子系然,分别是图层管理、媒体库、SQLite、OpenGL EState、FreeType、WebKit、SGL、SSL和libc。

其中,SQLite是遵守ACID 的关系数据库管理系统,它包括在一个相对小的C程序中;OpenGL (OpenGraphics Library,开放图形库)是个定义了一个跨编程语言、跨平台的应用程序接口(API)的规范,它用于生成二维和三维图像。

Android运行时包括核心库和 Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,如android.os、android.Net、android.media等;后者是一种基于寄存器的Java虚拟机,主要实现对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理及垃圾回收等重要功能。

Linux内核层

Android核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、Flash内存驱动、Binder (IPC)驱动、键盘驱动、WiFi驱动、Audio驱动和电源管理等。

Android开发环境搭建

Android是基于Java开发的,因此需要先配置好系统的Java开发环境,其次是Android开发环境及模拟器。

Windows环境下搭建步骤:

  • 配置Java环境
  • 配置Android Studio环境
  • 配置Genymotion模拟器
  • 配置模拟器与Android Studio关联

具体的步骤网上有很多优秀的方法分享,这里就不写了。

Android中的R文件

在Android学习过程中,经常看到好多R文件,还会遇到R文件报错,向我这样的初学者很头疼,既不懂,也不能解决。

什么是R文件?

在Android Studio默认的工程文件中是找不到R文件的,需要切换到工程目录才可以查看R文件。

Android应用程序被编译后会自动生成一个R类,其中包含了所有res/目录下的ID,如布局文件、资源文件及图片文件(values下的所有文件)的ID等。在编写Java代码需要用这些资源的时候,可以使用R类,通过子类 + 资源名或者直接使用ID来访问资源。

R.java文件是活动的Java文件(如MainActivity.java)和资源文件(如 strings.XML)之间的“胶水“。一般不建议直接修改R.java文件的内容,因为修改会破坏整个工程的资源信息。

通过R文件实现资源调用

情况有两种:Java代码中使用和XML代码中使用。

Java代码中使用

Java文本:

txtName.setText(getResources().getText(R.string.name));

图片:

imgIcon.setBackgroundDrawableResource(R.drawable.icon);

颜色:

txtName.setTextColor(getResource().getColor(R.color.red));

布局:

setContentView(R.layout.main);

控件:

txtName = (TextView)findViewById(R.id.txt_name);

XML中使用

通过@xxx即可得到.

比如这里获取文本和图片:

<TextView
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/img_back"/>

"@+id/string_name"表达式

在布局文件当中需要为一些组件添加Id属性作为标示,可以使用如下的表达式“@+id/string_name”。

其中“+”表示在 R.java 的名为id的内部类中添加一条记录。如“@+id/button”的含义是在 R.java 文件中的 id 这个静态内部类添加一条常量名为button,该常量就是该资源的标识符。如果id这个静态内部类不存在,则会先生成它。

通过该方式生成的资源标识符,仍然可以以“@id/string_name”的方式引用。


posted @ 2021-03-09 23:41  这行代码没Bug  阅读(143)  评论(0编辑  收藏  举报