Android开发笔记

发布 2021-05-12 00:39:28 阅读 1140

—为资深j**a程序员提供一个概览android开发特点的快速通道

目录。1 hello, world! 2

2 android应用的特色类 3

2.1 应用的三种重要组件 3

2.2 sqlitedatabase 4

2.3 contentprovider和contentresolver 4

2.4 intent和bundle 4

3 用户界面组件体系 5

4 事件处理 6

5 activity和fragment 7

5.1 activity的生命周期和相关**方法 7

5.2 activity的子类和层次结构 8

5.3 activity的调用和加载 8

5.4 fragment 9

6 图像处理 10

6.1 使用drawable资源 10

6.2 绘图 10

6.3 动画 11

7 数据处理 11

7.1 支持少量数据存取的sharedpreferences 11

7.2 读写sd卡的文件 12

7.3 使用sqlite数据库 12

7.4 contentprovider 13

8 gps开发 13

android使用j**a作为开发语言,基本类库完全一致,所不同的仅是对ui部分,对j**a程序员的门槛很低,相当于熟悉一套新的awt/swing。同时,由于针对特定的操作系统(android),不用再考虑跨平台问题,android的ui能力得到了很大的增强,开发起来很爽。

android的页面布局增加了xml配置的方式,使布局**和应用逻辑进行了分离,提高了编程效率。页面布局配置使用ide提供的图形工具,可以用可视化的方法拖动控件完成布局,并在右侧的属性栏中直接设置常规属性,避免了大量的记忆和查阅api的工作,效率很高。

下面是一个经典的hello world示例。

package

public class mainactivity extends activity

这个示例实际包括了两部分内容。第一部分是所编写的源**(实际也是ide生成的)类,即所给出部分。该部分实现了一个activity(类似于j**a的jframe)的子类,并通过继承自activity的setcontentview方法设置了主窗口。

android程序的一个特点,是不再需要main方法作为应用入口点,而代之以在清单文件androidmanifest中指定执行类。文中的mainactivity类即被指定为执行类。

android程序的另一个特点,是应用资源和**的分离。上述例子**现的 “r”,就是工具为应用生成的资源引用类,是沟通应用和资源的桥梁。

应用资源作为独立的文件,放置在res目录中。该目录由多个子目录,这些子目录代表应用资源的四大类别:

1. layout。定义应用的布局,即前面讲到的xml配置文件(activity_配置文件也负责指定应用的执行点:

实际上,activity_的地位甚至要高过因为要在配置文件中定义哪个类是入口类。

2. menu。定义应用使用的菜单。

3. drawable。定义应用中使用的所有“可画出”的东西。

通常是**。android要适应不同手机屏幕的需要,要保存不同分辨率的图像版本,因此drawable资源实际为以drawable开头的一组目录。

4. values。定义应用中使用的字符串、维度(dimension)等。

将这些内容作为资源定义,可以更好地让内容与**分离。values同样涉及到适应不同屏幕(如dimension)的问题,因此也是一组目录。

为方便开发者引用资源,开发工具为应用自动生成一个资源描述类r,可以通过它得到所有对资源的引用。如上例中,页面布局配置文件作为一种资源,由对它进行了引用,并赋给了主窗口的视图。

android程序运行,需使用**d(android virtual device)。**d提供了一个模拟手机的环境,采取类似操作手机的方式控制程序运行。

注意:android程序中的输出,不显示在ide的console窗口,而显示在logcat窗口中。

activity:一个独立的用户界面,类似j**a的jframe或jsp。普通应用都是从建立activity的子类开始的。

service:在后台运行,没有用户界面的程序。

broadcastreceiver:广播消息处理应用,接收android系统中其它应用的消息,并进行处理。可以利用boardcastreceiver实现不同组件间的通信。

activity可以通过bindservice()方法与service绑定,从而实现方法调用和数据通信。也可以通过startservice()方法启动service。

activity可以通过sendbroadcast()方法发送广播消息,实现与broadcastreceiver的通信。

service与它所在的应用处于同一进程,不会单独启动一个进程,因此不能在service中处理耗时的任务。处理耗时任务需要启动新线程。此时可以使用其子类intentservice。

intentservice会创建单独的worker线程来处理所有的intent请求,无需开发者处理多线程问题。

android提供了一个轻量的、基于文件的数据库sqlite。sqlitedatabase封装了对该数据库的访问api,使开发者可以轻松访问本地数据库。

android的应用是相互独立的,各自运行在自己的dalvid(android平台的j**a虚拟机)中。contentprovider和contentresolver(contentprovider是数据服务提供者,contentresolver相当于contentprovider的远端**)实现了一组标准的方法,可以通过uri实现数据访问,从而能够让其他应用程序保存或读取此内容提供者处理的各种数据类型。

android的组件间相互调用时,不直接通过组件名,而是通过intent类型的参数进行调用,以实现程序间的解耦。例如activity有startactivity(intent)方法,service有startservice (intent)方法等。

intent封装了“调用意图”。调用意图可以直接给出被调用者的名字,也可以给出被调用者的条件,由系统负责寻找满足条件的组件(解耦!)。

intent还可以在调用方之间传递数据。所携带数据可以是简单的key-value(key是字符串,value是原始类型)形式,也可以是数据包bundle形式。两种参数均使用intent的put/get(xxx)extras方法(xxx表示get“key-value”参数时所取值的类型)。

bundle是个封装了多个数据的数据包,其元素还是key-value形式,但value可以是任何实现了serializable的对象。取放参数的方法分别是getxxx、getserializable和putxxx、putserializable。

intent的putextras方法还具有智能性!当已存在bundle对象时,putextras会自动将对象放在bundle中!

android应用的绝大部分ui组件都放在及其子包中。view是所有ui组件的祖先,它类似于jpanel,代表一个空白的矩形区域。

view的重要子类包括:

1. viewgroup。作为其它组件的容器使用。android的布局管理器都是的viewgroup子类。

2. textview。代表文本框,类似jlabel,但功能很强大,具有将指定格式文本自动转换为超链接、设置文本框关联的输入法等功能。

所有文本框类组件都是它的子类,包括编辑框、检查框、各类按钮。

3. imageview。用于显示**等任何可画出(drawable)的东西。android用类是所有可画出的东西的基类。

4. adaptview。表示列表项,包括listview、gridview、spinner(列表选择框,不同于swing的spinner)。

5. progressbar。进度条,包括horizontal(水平进度条)、inverse(环形进度条)、seekbar(拖动条)和ratingbar(星级评分条)等。

android笔记

button跳转页面。package import import import import import public class demomain extends activity 在中增加。设置背景。在res里建drawable的文件夹,把背景 放到文件夹中,在布局中输入android bac...

android笔记

code jdk net io 本地文件。j a class jvm dvmc c j a 900万人 j a android应用开发 app android系统开发。android移植开发。flv rmvb mp4 3gp 1.android源码,修改libraries,c 写插件 flv j a...

android笔记

android中调用activity的常用的纯背景颜色有 如图 开始动画 帧动画 第一种方式启动帧动画 在activity启动时会自动运行动画 animationdrawable ad imageview iv imageview findviewbyid animationdrawable 当一个...