Android学习笔记

Android学习笔记
Android学习笔记

Android学习笔记(by quqi99 MSN: quqi99@https://www.360docs.net/doc/6051700.html,)Android platform是一个用于开发移动程序的软件包,它包括了操作系统、中间件及一些关键应用。开发者能使用android SDK为Android platform开发应用,这些应用使用JA V A 语言书写,运行在虚拟机Dalvik(一个专为手机程序开发的基于linux内核的JA V A虚拟机)。

https://www.360docs.net/doc/6051700.html,/wiki/index.php?title=%E7%BF%BB%E8%AF%91%E4%BB%BB %E5%8A%A1%E9%A2%86%E5%8F%96&printable=yes

https://www.360docs.net/doc/6051700.html,/forumdisplay.php?fid=2

1 什么是Android

1.1 Android的特性

?应用框架,让一些基础设施得以重用

?Dalvik虚拟机,专为开发移动程序优化

?集成的浏览器,(基于WebKit引擎)

?优化的图形库,(2D图形库以及基于OpenGL ES 1.0规范的3D图形库)

?SQLite,用于结构化数据的存储,是一个数据库

?多媒体支持,支持多种音频,视频格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

?GSM技术(依赖具体硬件)

?Bluetooth, EDGE, 3G, WiFi(依赖具体硬件)

?Camera, GPS, compass, accelerometer(依赖具体硬件)

?丰富的开发环境(DEBUG工具,内存及性能工具,Eclipse的插件等)

1.2 Android的架构

Android操作系统的模块如下:

应用:Android已集成了一些应用,如邮件客户端,SMS程序,日历,地图,浏览器等

应用框架:

程序库:

例行程序

Linux内核

2 Andvoid起步

2.1 开发环境配置

使用Eclipse + Android Development Tools (ADT)插件。在Help > Software Updates > Find and Install....中键入更新地址:

https://https://www.360docs.net/doc/6051700.html,/android/eclipse/

2.2 运行第一个Andvoid程序

使用Eclipse插件

1、建立的工程类型为:Andvoid Project

2、建立Launch Configuration. Run > Open Run Dialog... or Run > Open Debug Dialog 命令行运行程序

1、创建工程activityCreator https://www.360docs.net/doc/6051700.html,.ActivityName

2、编译。在build.xml所在的目录ant一下。

3、启动模拟器. 运行命令:emulator

4、在模拟器中,切换到主屏幕。

5、在命令行输入:adb install myproject/bin/.apk将其上载至模拟器。

6、在模拟器中选择程序并启动。

Android需要专门的编译工具来正确的编译资源文件和Android程序的其他部分。基于此,你需要为你的程序准备一个专门的编译环境。

Andorid的编译过程通常包括编译XML和其他资源文件、创建正确的输入格式。经过编译的Android程序是一个.apk文件,.apk文件是一个压缩文件,它其中包含了.dex文件、资源文件、raw data文件和其他文件。

Andoriod暂时还不支持用本地代码(C/C++)开发第三方程序。

移除Andorid程序

要移除你安装在模拟器上的程序,你需要通过run adb并删除相应的.apk文件。通过adb shell命令在模拟器上打开一个UNIX shell,进入目录data/app/,通过命令rm 你程序的名称.apk来移除文件。

2.3 调试程序

Andvoid用于调试的手段有:

DDMS,DDMS是一个图形化的程序,支持端口转发(因此你可以在程序中设置断点),支持模拟器上的截屏,支持线程和堆栈信息和其他的一些特性。

Logcat,Dump一份系统消息的日志。这些消息包括模拟器抛出错误时的堆栈跟踪。Android Log, 打印日志的类,用来将消息写入模拟器上的日志文件中。如Log.v()用于打印verbose级别的日志

Traceview,Android可以保存一个日志用来记录被调用的方法以及该方法被调用的次数,通过Traceview你可以在一个图形化的界面中查看这个日志文件。

可接解设置emulator的设置以方便调试,

模拟器上调试和测试的设置

Android提供了众多的设置使你可以更容易的调试和测试程序。要进入开发设置页面,在模拟器中转到Dev Tools > Development Settings。在该设置页面有以下选项:

?Debug app:选择要调试的程序。你不需要设定其关联至调试器,但是设定这个值有两个效果:

o在调试的时候,如果你在一个断点处暂停了过长的时间,这个设定会防止Android抛出一个错误

o这个设定使你可以选择“等待调试器”选项,使程序只有在调试器关联上之后才启动

?Wait for Debugger:阻塞所选的程序的加载直到有调试器关联上,这样你就可以在onCreate()中设置断点,这对于调试一个Activity的启动进程是非常重要的。当你对该选项进行了更改,任何正在运行的程序的实例都会被终止。你只有在上面的选项

中选择了一个调试程序才能够选中该选项。你一也可以在代码中添加

waitForDebugger()来实现同样的功能。

?Immediately destroy activities:告诉系统一旦一个activity停止了就销毁该activity (例如当Android释放内存的时候)。这对于测试代码

onFreeze(Bundle)/onCreate(android.os.Bundle)是非常有用的,否则会比较困难。如果你的程序没有保存状态,那么选择这个选项很可能会引发很多问题。

?Show screen updates:对于任何正在被重绘的screen sections都会在其上闪现一个粉红色的矩形。这对于发现不必要的screen绘制是很有必要的。

?Show CPU usage:在屏幕上方显示CPU信息,显示有多少CPU资源正在被使用。

上方红色条显示总的CPU使用率,它下方绿色的条显示CPU用在compositing the

screen上的时间。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。

?Show screen FPS:显示当前的帧率。这对于查看游戏达到的总的帧率是非常有用的。

注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。

?Show background:当没有activity screens可见时,显示一个背景模式。一般是不会出现的,仅仅在Debug的时候会出现。

设定的选项在模拟器重启之后仍然有效,如果要取消设定的选项,在取消设定以后还要重启模拟器,才能生效。

2.4 andvoid中的概念

一个andvoid应用包括四个部分:

?Activity活动(个人认为:类似于JSP, 也相当于SWT中的Shell, View则

相当于wegiet)

?Intent Receiver (个人认为:类似于Struts action)

?Service (个人认为:类似于Servlet)

?Content Provider (个人认为:用于持久化)

用上面哪些组件,要在AndroidManifest.xml文件中声明。

1、Activity. 一个activity是应用中的一个单一的屏幕,它继承自Activity类,它将显示

由Views组成的UI以及响应事件。(个人理解,相当于JSP)

2、Intent与Intent Filters. Intent用于从一个屏幕跳到别一个屏幕,描述一个应用想做

什么,它的数据结构包括action与data两部分,action如MAIN、VIEW、PICK、EDIT等等, data被表达成一个URI;IntentFilter相当于告诉跳到哪个activity,;

IntentReceiver用于响应事件,虽然它不显示UI,但它可以用NotificationManager

去通知用户。它需要在AndroidManifest.xml文件中注册,或者是用

Context.registerReceiver()硬编码。

3、Service是一段有生命周期的无UI的代码。

4、Content Provider, 持久化,例如存储在文件系统中,或者存储在SQLite数据库中。

2.5 例子

1,下载例子工程。https://www.360docs.net/doc/6051700.html,/android/intro/codelab/NotepadCodeLab.zip

例如:Notepadv1工程是问题工程,Notepadv1Solution则是相应的解决工程。

2,3个例子的函义如下:

通过练习1>

1. 数据库对象的例子程序

2. 如何在一个Activity初始化的时候创建数据库对象

3. 如何为一个Activity创建一个pop菜单

4. 如何得到一个用户在POP菜单中选择的ITEM 的ID

5. 如何向一个ListView中写入数据

通过练习2>

1.如何取得数据集中被选择数据行的ID,注意rows是java的一个listarray对象,所以它有它的getSelection()的方法

2.如何调用一个SubActivity以及在调用一个SubActivity之前应该做些事情。3.要实现一个方法,当SubActivity返回后,应该做些什么

4.关于layout。由于Android采用MVC的模式,所以屏幕的布局采用了XML进行定义。一个好的布局会让程序显的更漂亮。可以参考https://www.360docs.net/doc/6051700.html,/android/reference/view-gallery.html,有很多的布局模式可供利用。5.如何创建一个开始的时候代码中不含onCreate()的类,因为到目前为止还没有创建过自己的类,以前看到的类和修改的方法都是已经写好的了。不过这个类也是一个从android.app.Activity继承的。创建后还是要通过Source Override一个onCreate的

6.从一个SubActivity返回时,在返回之前应该做哪些事情

7.如何在AndroidManifest.xml中声明一个新的Activity

8.如何创建一个内部隐含的onClickLister及实现其应有的功能。

通过练习3>

1. 除了onCreate()还有哪些和lifecycle有关的方法

a.onFreeze():

b.onPause()

c.onResume()

等等…

2. 大部分程序都有必要考虑lifecycle的问题,应该把下面的这个图记住:

3. 为了不丢失需要保存的信息,要明确的理解Activity的各个状态,并相应的给出在各个状态的行为。

4.开始的时候对于onFreeze()和onPause()有些理解上的困难,要多读几遍DOC来会理解。通过额外练习>

进一步的理解lifecycle和通过手机按键进行操作时的时间和程序状态关系

另外,SDK目录下也有一些例子。

练习目标:

1. 使用ListActivities,并使用菜单

2. 学习使用操作SQLite数据库

3. 使用ArrayAdapter绑定数据到ListView中

4. 掌握一些基本的操作,如菜单的显示,菜单命令的处理,增加数据项等。

第一步:

在SDK中下载获得Notepadv1的代码,并导入到Eclipse中。导入步骤:

a. 在Package Explorer中,右键选择Import.../General/Existing Projects into Workspace

b. 点Browse按钮,选择Notepadv1 的目录,并点OK

c. 你将会看到Notepadv1被列在项目区中,默认会被打勾,如果没有打勾,请手动勾

上。

d. 点Finish

e. Notepadv1将被列在Package Explorer中

f. 如果有提示关于AndroidManifest.xml的错误,请选中此项目,并右键选择Android

Tools->Fix Project,他将会自动帮你修复错误。

第二步:

看一下数据库操作类:DBHelper,还是比较简单的,自己看去:)。

第三步:

打开res/layout/notepad_list.xml 这个文件,快速的看下就可以了:

a.,XML文件的固定头

b.一个Layout的定义,这里是LinearLayout,但不一定是这个,可以是其他的Layout

第四步:

在上面的那个文件中加入:

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/no_notes"/>

a. ListView和TextView不会同是显示,如果没有数据,则默认显示TextView(这个View里会显示一个字符串)。如果有数据,则会显示ListView。

b.@是默认的关键字,XML解析器将会自动替换这个符号后面的ID

c.android:list 和android:empty 是android平台预定义好的ID,如果你想显示空的TextView,可以调用setEmptyView().

第五步:

建立一个新文件res/layout/notes_row.xml,文件内容如下:

xmlns:android="https://www.360docs.net/doc/6051700.html,/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

然后保存,R.java下将会自动刷新。

第六步

改变继承类

public class Notepadv1 extends ListActivity

第七步:

看一下这三个事件:

onCreate():界面初始化的时候调用

onCreateOptionsMenu():按了Menu按钮的时候调用onOptionsItemSelected() :选择了一个菜单项的时候调用

第八步:

改写OnCreate函数:

private DBHelper dbHelper;

@Override

public void onCreate(Bundle icicle)

{

super.onCreate(icicle);

setContentView(https://www.360docs.net/doc/6051700.html,yout.notepad_list);

dbHelper = new DBHelper(this);

fillData();

}

第九步:

在strings.xml 中增加:Add Item 并在Notepadv1类中加入:public static final int INSERT_ID = Menu.FIRST;

改写onCreateOptionsMenu()

@Override

public boolean onCreateOptionsMenu(Menu menu) {

boolean result = super.onCreateOptionsMenu(menu);

menu.add(0, INSERT_ID, R.string.menu_insert);

return result;

}

第十步:

改写onOptionsItemSelected()

@Override

public boolean onOptionsItemSelected(Item item) {

switch (item.getId()) {

case INSERT_ID:

createNote();

break;

}

return super.onOptionsItemSelected(item);

}

第十一步:

实现两个函数:

private void createNote() {

String noteName = "Note " + noteNumber++;

dbHelper.createRow(noteName, "");

fillData();

}

private void fillData() {

// We need a list of strings for the list items

List items = new ArrayList();

// Get all of the rows from the database and create the item list

List rows = dbHelper.fetchAllRows();

for (Row row : rows) {

items.add(row.title);

}

// Now create an array adapter and set it to display using our row

ArrayAdapter notes =

new ArrayAdapter(this, https://www.360docs.net/doc/6051700.html,yout.notes_row, items); //指定notes_row视图,作为数据容器。

setListAdapter(notes);

}

第十二步:

运行:Run As -> Android Application

2.6 开发工具

2.6.1 仿真器

仿真器是在计算机中运行的一个虚拟的移动装置,用它来设计、调试应用。

2.6.2 ADT

ADT是一个用于开发andvoid应用的确良eclipse插件,它方便了我们的开发。例如,它让我们方便从eclipse内部访问DDMS工具(可用于截屏,管理port-forwarding,设断点,

查看线程和进程信息)

2.6.3 DDMS

DDMS(Dalvik Debug Monitor Service)和Dalvik虚拟机集成,将在IDE和模拟器起到一个转发服务。用它能管理仿填器或者设备的进程,并且辅助调试。你可用它杀死进程,选择某一进程去DEBUG,产生TRACE数据,查看堆和线程信息等等。

2.6.4 ADB

ADB(Andvoid Debug Bridge)。在命令行操作。它能安装.apk文件到仿真器上等等。用于将文件发送到仿真器。adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:

1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;

2、在设备上运行shell命令;

3、管理设备或手机模拟器上的预定端口;

4、在设备或手机模拟器上复制或粘贴文件;

以下为一些常用的操作:

1、安装应用到模拟器:

adb install

比较郁闷的是,Android并没有提供一个卸载应用的命令,只能自己手动删除:

adb shell

cd /data/app

rm app.apk

2、进入设备或模拟器的shell:

adb shell

通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用以下的方式:

adb shell [command]

如:adb shell dmesg会打印出内核的调试信息。

3、发布端口:

你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:

adb forward tcp:5555 tcp:8000

4、复制文件:

你可向一个设备或从一个设备中复制文件,

复制一个文件或目录到设备或模拟器上:

adb push

如:adb push test.txt /tmp/test.txt

从设备或模拟器上复制一个文件或目录:

adb pull

如:adb pull /addroid/lib/libwebcore.so .

5、搜索模拟器/设备的实例:

取得当前运行的模拟器/设备的实例的列表及每个实例的状态:

adb devices

6、查看bug报告:

adb bugreport

7、记录无线通讯日志:

一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:

adb shell

logcat -b radio

8、获取设备的ID和序列号:

adb get-product

adb get-serialno

9、访问数据库SQLite3

adb shell

sqlite3

2.6.5 aapt

Aapt(Andvoid Asset Packaging Tool),用于创建.apk文件。

2.6.6 aidl

Aidl(Andvoid Interface Description Language)用于产生代码。

2.6.7 sqlite3

用于访问SQLite数据文件。

2.6.8 Traceview

查看LOG信息

2.6.9 mksdcard

Helps you create a disk image that you can use with the emulator, to simulate the presence of an external storage card (such as an SD card

2.6.10 dx

Dx工具用于重写.class字节码到Andvoid字节码

2.6.11 activityCreator

用于产生ant文件的脚本。当然,若用eclipse插件就不需要它了。

2.7 Andvoid应用的生命周期

在大部份情况下,每个Android应用都将运行在自己的Linux进程当中。当这个应用的某些代码需要执行时,进程就会被创建,并且将保持运行,直到该进程不再需要,而系统需要释放它所占用的内存,为其他应用所用时,才停止。

Android一个重要并且特殊的特性就是,一个应用的进程的生命周期不是由应用自身直接控制的,而是由系统,根据运行中的应用的一些特征来决定的,包括:这些应用对用户的重要性、系统的全部可用内存。

对于应用开发者来说,理解不同的应用组件(特别是Activity、Service、Intent Receiver)对应用进程的生命周期的影响,这是非常重要的。如果没有正确地使用这些组件,将会导致当应用正在处理重要的工作时,进程却被系统消毁的后果。

对于进程生命周期,一个普遍的错误就是:当一个Intent Receiver在它的onReceiveIntent()方法中,接收到一个intent后,就会从这个方法中返回。而一旦从这个方法返回后,系统将会认为这个Intent Receiver不再处于活动状态了,也就会认为它的宿主进程不需要了(除非宿主进程中还存在其它的应用组件)。从而,系统随时都会消毁这个进程,收回内存,并中止其中还在运行的子线程。问题的解决办法就是,在IntentReceiver中,启动一个Service,这样系统就会知道在这个进程中,还有活动的工作正在执行。

为了决定在内存不足情况下消毁哪个进程,Android会根据这些进程内运行的组件及这些组件的状态,把这些进程划分出一个“重要性层次”。这个层次按顺序如下:

1、前端进程是拥有一个显示在屏幕最前端并与使用者做交互的Activity(它的onResume 已被调用)的进程,也可能是一个拥有正在运行的IntentReceiver(它的onReceiveIntent()方

法正在运行)的进程。在系统中,这种进程是很少的,只有当内存低到不足于支持这些进程的继续运行,才会将这些进程消毁。通常这时候,设备已经达到了需要进行内存整理的状态,为了保障用户界面不停止响应,只能消毁这些进程;

2、可视进程是拥有一个用户在屏幕上可见的,但并没有在前端显示的Activity(它的onPause已被调用)的进程。例如:一个以对话框显示的前端activity在屏幕上显示,而它后面的上一级activity仍然是可见的。这样的进程是非常重要的,一般不会被消毁,除非为了保障所有的前端进程正常运行,才会被消毁。

3、服务进程是拥有一个由startService()方法启动的Service的进程。尽管这些进程对于使用者是不可见的,但他们做的通常是使用者所关注的事情(如后台MP3播放器或后台上传下载数据的网络服务)。因此,除非为了保障前端进程和可视进程的正常运行,系统才会消毁这种进程。

4、后台进程是拥有一个用户不可见的Activity(onStop()方法已经被调用)的进程。这些进程不直接影响用户的体验。如果这些进程正确地完成了自己的生命周期(详细参考Activity 类),系统会为了以上三种类型进程,而随时消毁这种进程以释放内存。通常会有很多这样的进程在运行着,因些这些进程会被保存在一个LRU列表中,以保证在内存不足时,用户最后看到的进程将在最后才被消毁。

5、空进程是那些不拥有任何活动的应用组件的进程。保留这些进程的唯一理由是,做为一个缓存,在它所属的应用的组件下一次需要时,缩短启动的时间。同样的,为了在这些缓存的空进程和底层的核心缓存之间平衡系统资源,系统会经常消毁这些空进程。

当要对一个进程进行分类时,系统会选择在这个进程中所有活动的组件中重要等级最高的那个做为依据。可以参考Activity、Service、IntentReceiver文档,了解这些组件如何影响进程整个生命周期的更多细节。这些类的文档都对他们如何影响他们所属的应用的整个生命周期,做了详细的描述。

2 开发应用

2.1 前端UI

2.1.1 .屏幕元素的层次

1. Views

一个View是android.view.View基础类的一个对象,它是一个有屏幕上特定的一个矩形内布局和内容属性的数据结构。一个View对象处理测量和布局,绘图,焦点变换,滚动条,还有屏幕区域自己表现的按键和手势。

View类作为一个基类为widget(窗体部件)服务,widget--是一组用于绘制交互屏幕元素的完全实现子类。Widget处理它们自己的测距和绘图,所以你可以更快速地用它们去构建你的UI。可用到的widget包括Text,EditText,InputMethod,Button,RadioButton,Checkbox,和ScrollView。

2. Viewgroups

一个ViewGroup是一个android.view.Viewgroup类的对象。一个viewgroup是一个特殊的view对象,它的功能是去装载和管理一组下层的view和其他viewgroup,Viewgroup让你可

以为你的UI增加结构并且将复杂的屏幕元素构建成一个独立的实体。

Viewgroup类作为一个基类为layout(布局)服务,layout--是一组提供屏幕界面通用类型的完全实现子类。layout让你可以为一组view构建一个结构。

3. A Tree-Structured UI

在Android平台上,你用view树和viewgroup节点来定义一个Activity的UI,就如同下面图表一样。这个树可以如你需要那样简单或者复杂,并且你可以使用Android的预定义widget和layout或者你自定义的view类型来构建它。

要将屏幕绑定一个树以便于渲染,你的Activity调用它的setContentView()方法并且传递一个参数给根节点对象。一旦Android系统获得了根节点的参数,它就可以直接通过节点来无效化,测距和绘制树。当你的Activity被激活并且获得焦点时,系统会通知你的activity 并且请求根节点去测距并绘制树,根节点就会请求它的子节点去绘制它们自己。每个树上的viewgroup节点都为它的子节点的绘制负责。

正如之前提到的,每个view group都有测量它的有效空间,布局它的子对象,并且调用每个子对象的Draw()方法去绘制它们自己。子对象可能会请求获得一个它们在父对象中的大小和位置,但是父对象对于每个子对象的大小和位置有最终的决定权。

4. LayoutParams:一个子对象如何指定它的位置和大小

每个viewgroup类都会使用一个继承于https://www.360docs.net/doc/6051700.html,youtParams的嵌套类。这个子类包含了包含了定义一个子对象位置和大小的属性类型,并且需适用于view group类。

要注意的是,每个LayoutParams子类都有它自己赋值的语法。每个子元素必须定义适用

于它们父对象的LayoutParams,尽管父对象可能会为子元素定义不同的LayoutParams。

所有的viewgroup都包括宽和高。很多还包括边界的定义(margin和border)。你可以非常精确地描述宽和高,尽管你并不想经常这么做。更多时候你希望你的view自行调整到适应内容大小,或者适应容器大小。

2.1.2.通用布局对象(最普遍的view groups)

1. FrameLayout (上下压着的那种)

FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象—比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。

2. LinearLayout

LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。

LinearLayout还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight 值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。

Tip:为了在屏幕上创建一个按比例安排大小的layout,需要根据这个屏幕上每个元素将按什么比例显示,创建一个指定fill_parent,子元素的height或width为0,且为每一个子元素分配weight值的容器对象。

下面的两个窗体采用LinearLayout,包含一组的元素:一个按钮,几个标签,几个文本框。两个窗体都为布局做了一番修饰。文本框的width被设置为FILL_PARENT;其它元素的width被设置为WRAP_CONTENT。默认的对齐方式为左对齐。左边的窗体没有设置weight(默认为0);右边的窗体的comments文本框weight被设置为1。如果Name文本框也被设置为1,那么Name和Comments这两个文本框将会有同样的高度。

在一个水平排列的LinearLayout中,各项按他们的文本基线进行排列(第一列第一行的元素,即最上或最左,被设定为参考基线)。因此,人们在一个窗体中检索元素时,就不需要七上八下地读元素的文本了。我们可以在layout的XML中设置android:baselineAligned="false",来关闭这个设置。

3. TableLayout

TableLayout将子元素的位置分配到行或列中。一个TableLayout由许多的TableRow组成,每个TableRow都会定义一个row(事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout容器不会显示row、cloumns或cell的边框线。每个row拥有0个或多个的cell;每个cell拥有一个View对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML中的不一样。下图显示了一个TableLayout,图中的虚线代表不可视的单元格边框。

列可以被隐藏,也可以被设置为伸展的从而填充可利用的屏幕空间,也可以被设置为强制列收缩直到表格匹配屏幕大小。对于更详细信息,可以查看这个类的参考文档。

4. AbsoluteLayout

AbsoluteLayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。

5. RelativeLayout

RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个layout,在你定义它之前,被关联的元素必须定义。

这是一个RelativeLayout例子,其中有可视的和不可视的元素。基础的屏幕layout对象是一个RelativeLayout对象。

这个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。这些属性一部份是由元素直接提供,另一部份是由容器的LayoutParams成员(RelativeLayout的子类)提供。RelativeLayout参数有width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部份,其值是相对于其它子元素而言的,所以才RelativeLayout。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和下的位置。

6. Summary of Important View Groups

重要View Group摘要,这些对象拥有UI子元素。一些提供可视的UI,另一些只处理子元素的布局。

2.1.3 数据绑定

这部分会提及UI有的一些View groups,些组成对象是经典AdapterView类的子类.例如包括图像,数层结构表现.这些对象有2个通用的任务: 数据层的填充与用户操作选择

1. 数据层填充

This is typically done by binding the class to an Adapter that gets its data from somewhere —either a list that the code supplies, or query results from the device's database.

// Get a Spinner and bind it to an ArrayAdapter that

// references a String array.

private String[] fruit = {"apples", "oranges", "lemons"}

Spinner s1 = (Spinner)findViewById(R.id.fruitlist);

s1.setAdapter(new ArrayAdapter(this, mStrings));

// Load a Spinner and bind it to a data query.

private String[] cols={https://www.360docs.net/doc/6051700.html,};

private Cursor cur = managedQuery(android.provider.Contacts.People.CONTENT_URL, cols, null, null);

s2.setAdapter(new CursorAdapter(cur, this));

2. 用户操作选择

设置类的AdapterView.OnItemClickListener 方法监听和捕捉用户的操作事件.

// Create a message handling object as an anonymous class.

private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id)

{

// Display a messagebox.

showAlert("You've got an event", "Clicked me!", "ok", false);

}

};

// Now hook into our object and set its onItemClickListener member

// to our class handler object.

mHistoryView = (ListView)findViewById(R.id.accept_button);

mHistoryView.setOnItemClickListener(mMessageClickedHandler);

2.1.4使用XML设计你的屏幕显示

1. Android定义了大量的自定义元素,各自代表了特定的Android显示子类。

2. 你可以象创建HTML文档一样,通过保存在应用res/layout/目录下的XML文件中一系列的嵌套标签来设计你的屏幕显示。

3. 每个文档描述一个android.view.View这个元素既可以是

一个简单的显示元素,也可以是一个在子节点中包含了一个集合的版面设计的元素,当Android编译你的应用时,他将每个文件都编译进android系统。你可以在代码Activity.onCreate()实现中通过调用setContentView(https://www.360docs.net/doc/6051700.html,yout_file_name)方法加载显示

资源。

2.1.5 在屏幕元素中设置句柄

1.您可以使用Activity.findViewById来取得屏幕上的元素的句柄. 使用该句柄您可以设置或获取任何该对象外露的值.

TextView msgTextView = (TextView)findViewById(R.id.msg);

msgTextView.setText(R.string.push_me);

2.2 构建组成模块

Android应用是由各种各样的组件来构成. 这些组件大部分都是松散联接,你可以精确的描述它们的联接程度,所以组建的联合比单个程序更有结合力.

显然,所有的组件运行在同一个系统进程里面.在这个进程里面创建多线程是可以允许的,并且是常见的.如果你需要,也可以对刚才那个系统进程创建相互独立的子进程.即使会有很多实例运行,但是他们之间互不干扰,这个是很难得的,因为Android可以确保代码是进程间透明的.

以下部分是很重要的Android APIs;

AndroidManifest.xml 是控制文件,告诉所有由高级组件构成的系统可以做什么.这些高级的组件包括(特殊activities,服务,接收器,第三方提供商).控制文件用来告诉系统如何使用你所创建的组件.

Activity 是一个有生命周期的对象. 一个Activity做一些工作需要相当大的数量的代码;如必要的话,这部分工作还可能包括对用户UI界面的显示,也可能是没有UI界面.代表性地解释Activity就是,你必须标明你应用程序的入口点.

视图(Views)可以将其自身绘制到屏幕(screen)上。Android的接口都是由一组以树的形式出现的视图组成的。开发者可以通过创建一个新的视图的方法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不常用的用户图形(UI)窗口界面(widget))。

Intents是一个消息操作对象.如果一个应用程序想要显示一个网页,那么它表示为Intent,我们可以通过Intent实例创建一个URI视图并且可以手工断开系统.系统设置一些代码(例如浏览器),可以让我们知道如果去操作Intent并且运行它.Intents 也可以被用于广播系统范围内的有效事件(例如播发一则通知).

An Intent is a simple message object that represents an "intention" to do something. For example, if your application wants to display a web page, it expresses its "Intent" to view the URI by creating an Intent instance and handing it off to the system.

The system locates some other piece of code (in this case, the Browser) that knows how to handle that Intent, and runs it. Intents can also be used to broadcast interesting events (such as a notification) system-wide.

服务是运行在后台的一段代码.它可以运行在它自己的进程,也可以运行在其他应用程序的进程里面,这要取决于自身的需要. 其他组件绑定到这个服务上面,并且可以请求远程方法调用.例如媒体播放器的服务,甚至当用户退出媒体用户向导界面,音乐依然可以持续播放.甚至当用户界面关闭,音乐播放依然继续.

A Service is a body of code that runs in the background. It can run in its own process, or in the context of another application's process, depending on its needs. Other components "bind" to a Service and invoke methods on it via remote procedure calls. An example of a Service is a media

学习android的心得体会

学习android的心得体会 【篇一:android实训心得体会】 项目总结 时间过的好快,为期三个月的实训生活即将结束了,每一次的实训我们都受益匪浅,我 们学到的不仅仅是课内还有课外,实训让我们的课内知识得到了巩固,专业知识、编程水平 都有很大的提高,我们非常感谢这次实训。刚开始二周的高强度的课程安排让我们受益匪浅;接下来的项目实训又让我们可以巩固 了课程。这让我觉得实习生活充实而有意义。乐淘购物项目和android优化大师,我更好的学习了ui的设计,如何使界面漂亮,美观, 巩固了listview,gridview,的使用,学会了动画进入界面的,和会移动的画廊等等。在这 两个项目中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完 成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获 取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上 真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。音乐播放器项目,我们是七个人组成小组完成的,由组长带领我们,分配任务,每个人, 都发挥自己的长处,更好地去完成任务。对于团队开发来说,团结一致使我深有体会。团队 的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具 体实践中,不仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经历,这是也是实训最大的收获。这次实训对于我以后学习、找工作也真是受益菲浅,在这3个月中让我初步从理性回到 感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!

安卓课程设计心得体会范文

安卓课程设计心得体会范文 安卓课程设计心得体会范文 两个星期的时间非常快就过去了,这两个星期不敢说自己有多 大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。虽说上过数据库上过管理信息系统等相关的课程,但是没有亲身经历过相关的设计工作细节。这次实习证实提供了一个很好的机会。 通过这次课程设计发现这其中需要的很多知识我们没有接触过,去图书馆查资料的时候发现我们前边所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我们不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。 从各种文档的阅读到开始的需求分析、概念结构设计、逻辑结 构设计、物理结构设计。亲身体验了一回系统的设计开发过程。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想办法去设计一个系统的时候才发现其中的难度。经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。

我想有这样的问题不止我一个,事后想想是一开始着手做的时 候下手过于轻快,或者说是根本不了解自己要做的这个系统是给谁用的。因为没有事先做过仔细的用户调查,不知道整个业务的流程,也不知道用户需要什么功能就忙着开发,这是作为设计开发人员需要特别警惕避免的,不然会给后来的工作带来很大的麻烦,甚至可能会需要全盘推倒重来。所以以后的课程设计要特别注意这一块的设计。 按照要求,我们做的是机票预订系统。说实话,我对这个是一 无所知的,没有订过机票,也不知道航空公司是怎么一个流程。盲目开始设计的下场我已经尝过了,结果就是出来一个四不像的设计方案,没有什么实际用处。没有前期的调查,仅从指导书上那几条要求着手是不够的。 在需求分析过程中,我们通过上网查资料,去图书馆查阅相关 资料,结合我们的生活经验,根据可行性研究的结果和客户的要求,分析现有情况及问题,采用ClientServer结构,将机票预定系统划 分为两个子系统:客户端子系统,服务器端子系统。在两周的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题:由于忘记了一些java语言的规范使得在调试过程中一些错误 没有发现,通过这次课程设计,我对调试掌握得更加熟练了,意识到了程序语言的规范性以及我们在编程时要有严谨的态度,同时在写程

A20_Android开发手册_V1[1].0

C o n f i d e n t i a l A20Android 开发手册 V 1.0 2013-02013-03 3-15

C o n f i d e n t i a l Revision History Version Date Section/Page Changes 1.0 2013-03-15 初始版本

C o n f i d e n t i a l 目录 一、A20概述 (4) 1.1A20主控介绍.....................................................................................................................51.2外围设备介绍.....................................................................................................................51.3软件资源介绍.....................................................................................................................5二、建立开发环境. (5) 2.1硬件资源............................................................................................................................62.2软件资源. (6) 2.2.1安装JDK (ubuntu12.04).....................................................................................62.2.2安装平台支持软件(ubuntu12.04).....................................................................62.2.3安装编译工具链(ubuntu12.04).........................................................................62.2.4安装phoenixSuit (windows xp )........................................................................72.2.5其他软件(windows xp ).. (7) 三、源码下载 (8) 3.1wing 源码下载....................................................................................................................83.2仓库的目录树.. (8) 3.2.1android 目录树.........................................................................................................83.2.2lichee 目录结构.. (9) 3.2.2.1buildroot 目录结构........................................................................................93.2.2.2linux-3.3目录结构......................................................................................103.2.2.3u-boot 目录结构..........................................................................................113.2.2.4tools 目录结构............................................................................................123.2.2.5boot 目录结构 (12) 四、编译和打包 (13) 4.1源码编译 (13) 4.1.1lichee 源码编译......................................................................................................134.1.2android 源码编译...................................................................................................134.2打包固件.. (13) 4.2.1完全打包...............................................................................................................134.2.2局部打包 (14) 五、固件烧写 (14) 5.1使用PhoenixSuit 烧写固件.............................................................................................145.2使用fastboot 更新系统 (14) 5.2.1进入fastboot 模式.................................................................................................145.2.2fastboot 命令使用.. (15) 六、recovery 功能使用 (15) 6.1键值的查看......................................................................................................................156.2按键选择..........................................................................................................................166.3功能使用..........................................................................................................................16七、调试 (17) 7.1调试apk...........................................................................................................................177.2调试linux 内核. (17)

安卓实训报告总结

安卓实训报告总结 不知不觉中为期三周的实训已经接近尾声。虽然时间很短,不过我确实学到了一些我觉得有用的东西,并且是平时上课学不到的东西。三周的实训,时间很短,确实很短。原本刚开始,乃至之前听说有为期三周的实训的时候,都觉得,这样的实训不过就是走过场罢了,只有三周的时间,能学到什么东西呢?所以一开始也没当回事。 就这样,带着这样的心态,开始了实训。因为第一天周一上午没有课,下午,才算是正式开始了三周的实训。一开始听老师讲课的时候,感觉很舒服啊,噼里啪啦一讲一堆,不过我就喜欢这样的,听着爽埃平时老师上课的时候都是讲一句顿一顿,或者一句话反复琢磨半天,这样的话,虽然老师的出发点是好的,是为了让学生更容易理解,但这样的话,教学的整体进度就下来了。而且就算是一个知识点反复讲,也不见得能就精通了这个东西,或者说对这个有多么理解。反而容易让学生产生一种懈怠的情绪。 而这样一开始,老师就给我一种耳目一新的感觉:这老师上课带劲啊!不过也就仅此而已了。老师花了一下午的时间着重介绍了老师所在的公司,以及我们接下来三周的实训计划。接下来一周实训之后,这个实训在老师的刻意营造下,尽量模仿公司的氛围。而让我感受最受的就是:凭事实说话。就是无论要下什么结论的时候,都要拿得出能够说服人的数

据。 这是我在第一周中感受最深的一件事。也是我学到的第一件事。说话下结论要有真凭实据。 在这一周中,老师着重讲了如何进行系统构架。因为之前也跟老师做过项目,所以对进行系统构架的理解要稍微深入些,对其重要性的了解也要多一些。这样,在老师的讲解下,再和我以前的理解相互验证,感觉就像武功高手,在前辈的点拨下顿悟了一样。 这就是我学到的第二件事,是在专业技能方面的收获。 然后在接下来的一周中,这样的学习中老师让我们每组一个白板,然后把每天的任务完成情况着实记录。这样,不同的组之间要对比;同组,不同的组员之间对比;自己今天和昨天的对比。无形中产生了一种强大的推理,推动我们前进。 这是我学习到的第三件事:没有动力,就学会寻找动力,而比较,是最有效的激励。 在第二周结束的时候,我们用来结束实训的一个项目就正式开始了。这个项目的时间很短,三天,如果算上上周末的时间的话,那就是五天,但前一周的时间确实没有有效的利用起来。那么这样只好算三天了。在这次项目中,我没有一个人大包大揽,一个人把项目扛下来。因为之前跟老师做过项目,并且我也是小组负责人,虽然作为这个小组负责人,我做的很不好,但有这样的一次经历之后,我知道我哪里做

关于安卓应用程序的实习心得与报告

关于安卓应用程序的实习心得与报告 篇一:Android实习心得 刚开始接触Android感觉到它很有意思,在界面开发上和web 也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想。 我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。 1通过半个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。 2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。

4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。 在Android编程过程中巩固熟悉了Java的编程。由于Android 应用程序的开发离不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发,必须要具备Linux,C/C++高级编程才能深入的涉及Android Framework和Android内核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。 由于这次实习时间较短,对于Android应用程序的高级编程讲的很少,是这次实习中的不足。要想开发一些好的应用程序,还需要更多的知识支持。在做实习最后的项目时,遇到了很多平时没有遇到或者没有特别关注的问题,如常见的Activity忘记注册,对SD卡存取需要权限,在写SQL语句时细微的错误就可能导致程序运行错误。这些问题只有自己在实际开发中才能体会到并且解决,并且在解决后可以长时间的记住。 通过Android的实习,我们在大四毕业前,我们又掌握了一项新的前沿的开发技能,也有了更多的发展方向,这在以后的找工作的过程中无疑为我们增加了砝码,也可以成为我们的一项兴趣爱好,可

Android课程设计报告材料

河南城建学院 课程设计报告书 专业:计算机科学与技术 课程设计名称:《Java高级应用》 题目:基于Android平台的记事本软件 班级:0814131班 学号:081413107 设计者:付明玉 同组人员: 李志军、翟帅星 指导老师:张妍琰景伟娜陈红军 完成时间:2016年06月04

一、设计目的 (2) 1.1设计目的 (2) 1.2设计要求 (2) 二、需求分析 (2) 2.1需求分析 (2) 2.2软件逻辑 (3) 2.2.1软件逻辑图 (3) 2.2.2功能模块图 (4) 2.3 数据存储实现 (5) 三、模块分析及设计 (6) 3.1首页面 (6) 3.2主菜单 (7) 3.3 查看模块 (8) 3.4添加记录 (10) 3.5 垃圾箱 (10) 3.6 设置页面 (11) 3.7 日历页面 (12) 四、制作过程及要点 (12) 五、设计总结 (13) 六、参考资料 (15)

一、设计目的 1.1设计目的 《Java高级应用》课程设计是我们实践性学习环节之一,通过课程设计:(1)、巩固本学期所学的理论知识,熟悉androidstutio 工具及相关java组件的灵活应用。(2)、编制出完整的应用程序,锻炼我们的分析解决实际问题的能力,为以后完成大型项目的开发打下基础。(3)、把理论与实验课所学内容做一个综合,并在此基础上强化我们的实践意识、提高实际动手能力和创新能力。 1.2设计要求 设计一款基于Android平台的记事本软件。 功能要求:具有记事本的基本功能,可以实现记录,批量处理。具备在线备份和分享功能。在线备份能备份各种编辑中或者编辑完成的文章。 二、需求分析 2.1需求分析 (1)用户进入系统后可以设置个人信息:设置页面颜色、姓名、电话、及锁定密码,设置标记; (2)查看记录:查看以前的记录;

Android开发规范参考文档

Android开发参考文档 一、Android编码规范 1. java代码中不出现中文,最多注释中可以出现中文.xml代码中注释 2. 成员变量,局部变量、静态成员变量命名、常量(宏)命名 1). 成员变量: activity中的成员变量以m开头,后面的单词首字母大写(如Button mBackButton; String mName);实体类和自定义View的成员变量可以不以m开头(如ImageView imageView,String name), 2). 局部变量命名:只能包含字母,组合变量单词首字母出第一个外,都为大写,其他字母都为小写 3). 常量(宏)命名: 只能包含字母和_,字母全部大写,单词之间用_隔开UMENG_APP_KEY 3. Application命名 项目名称+App,如SlimApp,里面可以存放全局变量,但是杜绝存放过大的实体对象4. activity和其中的view变量命名 activity命名模式为:逻辑名称+Activity view命名模式为:逻辑名称+View 建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view 5. layout及其id命名规则 layout命名模式:activity_逻辑名称,或者把对应的activity的名字用“_”把单词分开。

命名模式为:view缩写_模块名称_view的逻辑名称, 用单词首字母进行缩写 view的缩写详情如下 LayoutView:lv RelativeView:rv TextView:tv ImageView:iv ImageButton:ib Button:btn 6. strings.xml中的 1). id命名模式: activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称,strings.xml中,使用activity名称注释,将文件内容区分开来 2). strings.xml中使用%1$s实现字符串的通配,合起来写 7. drawable中的图片命名 命名模式:activity名称_逻辑名称/common_逻辑名称/ic_逻辑名称 (逻辑名称: 这是一个什么样的图片,展示功能是什么) 8. styles.xml 将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中; 9. 使用layer-list和selector,主要是View onCclick onTouch等事件界面反映

安卓实训总结报告

安卓实训总结报告 安卓实训的总结与体会【1】 不知不觉中为期三周的实训已经接近尾声。 虽然时间很短,不过我确实学到了一些我觉得有用的东西,并且是平时上课学不到的东西。 三周的实训,时间很短,确实很短。 原本刚开始,乃至之前听说有为期三周的实训的时候,都觉得,这样的实训不过就是走过场罢了,只有三周的时间,能学到什么东西呢?所以一开始也没当回事。 就这样,带着这样的心态,开始了实训。 安卓实训。 因为第一天周一上午没有课,下午,才算是正式开始了三周的实训。 一开始听老师讲课的时候,感觉很舒服啊,噼里啪啦一讲一堆,不过我就喜欢这样的,听着爽啊。 平时老师上课的时候都是讲一句顿一顿,或者一句话反复琢磨半天,这样的话,虽然老师的出发点是好的,是为了让学生更容易理解,但这样的话,教学的整体进度就下来了。 而且就算是一个知识点反复讲,也不见得能就精通了这个东西,或者说对这个有多么理解。 反而容易让学生产生一种懈怠的情绪。 一、第一件事:说话做事要有真凭实据

而这样一开始,老师就给我一种耳目一新的感觉:这老师上课带劲啊!不过也就仅此而已了。 老师花了一下午的时间着重介绍了老师所在的公司,以及我们接下来三周的实训计划。 接下来一周实训之后,这个实训在老师的刻意营造下,尽量模仿公司的氛围。 而让我感受最受的就是:凭事实说话。 就是无论要下什么结论的时候,都要拿得出能够说服人的数据。 这是我在第一周中感受最深的一件事。 也是我学到的第一件事。 说话下结论要有真凭实据。 二、第二件事:专业技术的不断学习 在这一周中,老师着重讲了如何进行系统构架。 因为之前也跟老师做过项目,所以对进行系统构架的理解要稍微深入些,对其重要性的了解也要多一些。 这样,在老师的讲解下,再和我以前的理解相互验证,感觉就像武功高手,在前辈的点拨下顿悟了一样。 这就是我学到的第二件事,是在专业技能方面的收获。 三、第三件事:学会寻找动力 然后在接下来的一周中,这样的学习中老师让我们每组一个白板,然后把每天的任务完成情况着实记录。

Android程序员转正工作总结

Android程序员转正工作总结 Android程序员转正工作总结 我于xxxx年9月11日成为本公司技术部的一名.net程序员,三个月的试用期转眼就过去了。这段我人生中弥足珍贵的经历,给我留下了精彩而美好的回忆。在这段时间里您们给予了我足够的关怀、支持和帮助,让我充分感受到了领导们海纳百川的胸襟,在对您们肃然起敬的同时,也为我有机会成为影响力在线的一员而惊喜万分。 这段时间,在领导和同事们的关怀和指导下,我通过不懈努力,各方面均取得一定的进步,现将我的工作情况做如下汇报: 一、通过理论学习和日常工作积累经验我的各方面有了很大的进步。 刚到公司不久,我便开始负责.NET方面的网站开发和广告平台开发和维护,刚开始的时候对我来说确实压力很大,因为各方面都还不熟悉,而且与之前的公司相比,节奏也有点快,不过我慢慢的习惯了环境,和同事相处的比较融洽,领导对我也比较关心,在公司里工作就像是在一个幸福的大家庭里一样,我很快喜欢上了这里。 我到公司不久,第一个项目是xxx公司网站,做这个项目的时候我遇到了几个问题,我在以前公司做的时候没有在这么短的时候完成一个项目的,在效率上提高了我的能力。做这个项目的时候我也遇到了许多以前没有遇到过的问题,

我请教同事和朋友,还有借助网络一一解决了难题。 之后,我将B2B广告招商平台进行了改版,开发了xxx 智能建站广告平台以及以后网站的维护工作。 接下来,我又做了一个比较棘手的项目xxx在线咨询系统。为什么说棘手呢,因为我以前没有做过这方面的项目,而且我问遍了所有认识的朋友,搜遍了网络也没有找到如何解决的方法,之后我翻书籍,接着搜索网络。功夫不负有心人,终于我找到一个聊天室的小例子,但是功能差的太远,于是我把这个示例一点点的研究,从一点也不懂到后来慢慢看懂,从对AJAX技术一无所知到基本熟练运用。接下来我就开始自己开发,到最后终于把它开发了出来,虽然不是很完美,功能不是很强大,但是它是我辛苦的劳动结晶,我相信以后会把它开发的更强大,更完美。 二、明确岗位职能,认识个人技术能力不足。 经过三个多月的工作,虽然完成了一些项目的开发,我的技能也提高了很多,但是感觉我的技术还有待提高,所以我会在以后的工作中更加努力,努力提高自己的技术和各种不足,努力使自己成为一名称职的职员。 三、提出自己努力计划 1、学无止镜,时代的发展瞬息万变,各种学科知识日新月异。我将坚持不懈地努力学习各种技术知识,并用于指导实践。 2、业精于勤而荒于嬉,在以后的工作中不断学习知识,通过多看、多学、多练来不断的提高自己的各项技能。

安卓实验报告

安卓实验报告 班级:xxxxx 学号: 姓名:xxxx 实验一:Activity生命周期的测试

一:实验目的 掌握使用Eclipse开发Android应用开发程序的方法; 掌握Android虚拟设备的创建方法; 了解Android的程序结构; 了解使用命令行创建Android程序方法; 了解Activity生命周期,理解Activity事件回调,onRestoreInstanceState()和onSaveInstanceState两个函数的使用。 二:实验设备 Eclipse 开发Android 应用 Android虚拟设备( AVD) 三:实验内容 (1)正常启动ActivityLife,然后单击用户界面的“结束程序”按钮关闭程序。 (2)正常启动ACtivityLife,然后通过“拨号键”启动内置的拨号程序,再通过“回退建”退出拨号程序,使ActivityLife重新显示在屏幕中。 四:实验核心代码 package class MainActivity extends Activity { private static String TAG="LIFECYCLE"; @Override protected void onCreate(Bundle savedInstanceState) { (savedInstanceState); setContentView (TAG,"(1) onCreate()"); Button button =(Button) findViewById (new OnClickListener() { public void onClick(View view) { oString().trim(); String str1 = ().toString().trim(); ("姓名:"+str); ("爱好:"+str1); if (arg1 == ("性别:"+"男"); else if (arg1 == ("性别:"+"女"); } }); } }); } } 五:运行结果截图:

Android实训心得

Android实训心得 刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通 的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发 范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比 较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想。 我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。 通过半个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前 沿开发技术的了解,也是对编程知识的一次提升。 通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以 快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的 界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进 行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间 的跳转Intent管理,通过Bundle对数据在界面之间进行传输。 在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广 播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一 个当前的CurrentActivity这个变量进行控制,进行处理。 在Android编程过程中巩固熟悉了Java的编程。由于Android应用程序的开发离 不开Java的支持,所以基础的Java知识是必须的。Android系统是基于Linux的手机操作系统平台,要深入系统的学习Android,不仅仅是有Java和Android应用开发, 必须要具备Linux,CC++高级编程才能深入的涉及Android Framework和Android内 核开发。成为Android开发的高素质人才。所以,在后续对Android的学习中可能会看一些较底层的书籍。

安卓开发环境搭建完全手册

安卓开发环境搭建完全手册 小安:博士,刚才听你说了这么多,我感觉Android平台真是前景无限,决定要从事Android开发,成为一名Android高手。今后请您多多指教! 大致:小安,我代表全体Android开发人员欢迎你加入Android开发的队伍,现在我就告诉你开发Android需要准备些什么。 1.1准备所需软件 1.1.1Android开发需要的工具 1)JDK5或JDK6 需要注意的是仅有JRE是不够的。JRE是Java的运行环境,而JDK不仅包含了JRE,还包含了我们开发Java程序所需要的工具集合。 JDK可以到:https://www.360docs.net/doc/6051700.html,/javase/downloads/index.jsp页面下载。 2)Eclipse3.5 使用MyEclipse也可以,但由于MyEclipse是收费的并且插件较多影响运行速度,因此不建议采用。Eclipse是一个开放源代码的、基于Java的可扩展的集成开发环境(IDE)。Eclipse中可以集成进多种插件,以完成特定语言的开发。 下载地址:https://www.360docs.net/doc/6051700.html,/downloads/页面中的EclipseIDEforJavaEEDevelopers链接。 3)Android SDK: SDK是我们开发Android应用程序的软件开发工具包。 下载地址:https://www.360docs.net/doc/6051700.html,/android/android-sdk_r05-windows.zip 4)Eclipse的插件ADT(Android Development Tools)

Android开发工具(ADT)是一个为EclipseIDE设计的旨在提供一个强大的、集成的环境来建立Android 应用程序的插件。ADT扩展了Eclipse的功能,可以快速建立新的Android项目,创建一个应用程序界面。它添加了基于Android框架API的组件,使用AndroidSDK工具调试你的应用程序,甚至导出签名(或未签名)APKs以分发你的应用程序。在Eclipse中强烈建议使用ADT进行开发,ADT提供了令人难以置信的提高开发Android应用程序的效率。 下载地址:https://www.360docs.net/doc/6051700.html,/android/ADT-0.9.5.zip 准备好这些工具,我们就可以安装这些软件来搭建Android的开发环境了。有一点需要注意,以上的链接部分会由于官方的更新而产生变动,有时下载到的版本不同,但下载的方式如此,如果遇到问题可以参考官方帮助文档 1.2安装所需的软件 1.2.1.安装JDK6 1.找到JDK安装文件,双击运行,界面如下:

Android实验一实验报告

Android实验报告一 姓名:丁军峰 班级:信科12-3 学号:08123448

一、实验内容 编写一个Android应用程序,实现对自己物品的管理,功能包括添加、删除和查询等 二、实验目的 了解android开发流程,掌握SQLite数据库和ListView控件的使用三、需求分析 使用SQLite数据库,使用ListView控件显示物品 四、实验过程 1.创建程序,设计用户交互界面

android项目实训心得体会

android项目实训心得体会 时间总是在不经意间悄然离去,在这短短的10天实训里,让我学会了很多课堂中学不到的东西。虽然只有10天,但让我感觉到无比的充实,让我懂得了学习的意义,时间的宝贵,认真负责的生活态度。明白了做一件事不肯能是一帆风顺,没有困难就没有进步,勇敢和坚持将会带领我们走向成功的驿站。也许这只是一次很小的成功,也会让我感到欣慰,因为我成功了。简单的去做好一件小事,铸就未来巨大的成功。 在这次实训中和队友一起完成一个项目,从开始的无从下手,到初见雏形,再到基本完善。这一幕幕的画面,让人无不对自己所做的标示认可与自豪。在那一行行代码间,流露出来的不只是大家对它付出的汗水,还有那份执着的心。 那天,我们吃着泡面坐着火车和地铁以及公交,不远千万厘米来到这环境清幽,绿化十足的圣地。实训基地虽有些简单,但宽敞明亮的场所让我们不由喜欢。在实训中,回味了曾经的对安卓的“味道”,又对新配方得产生了兴趣。安卓这道菜,想想都醉了。这次实训项目我们做的是个关于点餐类的APP。起初,强大的功能让我们这群菜鸟无从下嘴。但在我们这群崛起的码农面前,这次都不是问题。经过我们七嘴八舌的商讨下,最终确立了需求。需求就像我们人生的航标一样,有了它,我们的开发才有方向,不然都是无用的。每天我们制定开发计划,一小步一小步的走,一行一行慢慢的写。看着一个个小小功能的实现与完善,我们都对他竖起大拇指。

相信队友,这是我在此次实训中悟出来的一点体会。也许他平 日里不怎么优秀;也许他对开发不怎么会;也许他有一些懒惰。但我们都要相信他可以的。作为团队开发类项目,我们不能一个人什么都做完,这样其他人体会不到团队价值,这不利于项目的团队开发。我们要让每个人都有事做,并且要做好。 在这次实训中,我主要学到很多关于安卓界面布局的一些基础 知识。还有关于选项卡以及适配器和SQLite的一些简单操作。在此 次实训中,最主要的是让我的懂得了学习的意义和态度。当自己全身心投入代码的世界中时,时间似乎是静止的。当老师笑着说:“吃饭了…..”。才发现一上午就没了。这种忘我的学习态度,让人倍感兴奋。 此次实训,让我受益匪浅。在今后的工作和学习中用积极主动 的态度去对待,那将是一件美妙的事情。做一个迎难而上的自己,不断完善自己,突破自己。最后感谢在这次实训中无私的照顾我们的老师们,谢谢你们。 时间飞快,转眼毕设实训已经结束,我们也完成了所选的项目 任务。从实训开始到现在,经历了三个多月的时间,在这段时间里,我们着手安卓应用程序开发,刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接 比较零散,不过通过这些例子的学习我可以学习到了很多和以前java

Android开发入门文档 v1.1

RK28平台技术文档 Android 开发入门 部 门: 内核组 版 本: V1.1 作 者: 陈美友 文件状态: [√] 草稿 [ ] 正式发布 [ ] 正在修改 日 期: 2008-12-1 关键字 Linux 、Android 、Native C/C++、编译、下载 概 述 本文档主要讲述了Android 的下载、编译,以 及本地C/C++程序的开发、Android 应用程序 的开发等… 本文档适用了Android 开发的初学者

目录 下载ANDROID源码 (3) 编译ANDROID源码: (4) 编译ANDROID中的LINUX内核: (5) 编译NATIVE C/C++程序 (6) 运行NATIVE C/C++应用程序 (7) 在WINDOWS XP操作系统上构建ANDROID应用程序开发环境 (8) 编写ANDROID应用程序 (9) ANDROID SDK文件夹结构分析 (9) ANDROID源代码结构 (10) ANDROID应用程序生成 (10)

注: 如果你要创建Android的SDK,那么你必须安装JDK5,不要安装JDK6 $sudo apt-get install sun-java5-jdk 如果你使用apt-get下载安装程序时,发现某些安装包无法下载的情况, 那么你可以从网络上其它地方用其它的工具下载安装包,然后进行安装。我 通常是通过Windows上的迅雷下载,然后通过VMware中的文件共享传到Linux系统中。 我的电脑: 主系统:Windows XP 模拟器安装在Windows XP上 VMware中安装Linux:Ubuntu8.10 Android源码存放路径:~/mydroid 下载Android源码 在这里面以Ubuntu(x86)操作系统为例,说明下载Android的步骤: 下载必要工具: 下载GIT工具: $ sudo apt-get install git-core gnupg 下载JDK6: $ sudo apt-get install sun-java6-jdk 下载下列工具包:flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl $ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev 下载Valgrind工具(可选): $ sudo apt-get install valgrind 安装Repo工具: 创建目录存放Repo: $ cd ~ $ mkdir bin $ export PATH=~/bin:$PATH 下载Repo: $ curl https://www.360docs.net/doc/6051700.html,/repo >~/bin/repo

安卓实训总结报告

安卓实训总结报告 就这样,带着这样的心态,开始了实训。 安卓实训。 因为第一天周一上午没有课,下午,才算是正式开始了三周的实训。 一开始听老师讲课的时候,感觉很舒服啊,噼里啪啦一讲一堆,不过我就喜欢这样的,听着爽啊。 平时老师上课的时候都是讲一句顿一顿,或者一句话反复琢磨半天,这样的话,虽然老师的出发点是好的,是为了让学生更容易理解,但这样的话,教学的整体进度就下来了。 而且就算是一个知识点反复讲,也不见得能就精通了这个东西,或者说对这个有多么理解。 反而容易让学生产生一种懈怠的情绪。 一、第一件事:说话做事要有真凭实据 而这样一开始,老师就给我一种耳目一新的感觉:这老师上课带劲啊!不过也就仅此而已了。 老师花了一下午的时间着重介绍了老师所在的公司,以及我们接下来三周的实训计划。 接下来一周实训之后,这个实训在老师的刻意营造下,尽量模仿公司的氛围。 而让我感受最受的就是:凭事实说话。

就是无论要下什么结论的时候,都要拿得出能够说服人的数据。 这是我在第一周中感受最深的一件事。 也是我学到的第一件事。 说话下结论要有真凭实据。 二、第二件事:专业技术的不断学习 在这一周中,老师着重讲了如何进行系统构架。 因为之前也跟老师做过项目,所以对进行系统构架的理解要稍微深入些,对其重要性的了解也要多一些。 这样,在老师的讲解下,再和我以前的理解相互验证,感觉就像武功高手,在前辈的点拨下顿悟了一样。 这就是我学到的第二件事,是在专业技能方面的收获。 三、第三件事:学会寻找动力 然后在接下来的一周中,这样的学习中老师让我们每组一个白板,然后把每天的任务完成情况着实记录。 这样,不同的组之间要对比;同组,不同的组员之间对比;自己今天和昨天的对比。 无形中产生了一种强大的推理,推动我们前进。 这是我学习到的第三件事:没有动力,就学会寻找动力,而比较,是最有效的激励。 四、第四件事:学会尊重别人,那样你也会获得别人的尊重 在第二周结束的时候,我们用来结束实训的一个项目就正式开始了。

相关文档
最新文档