第一个Android 程序的源代码: TxtReader文本阅读器

移动开发 Android

刚学习Android开发的时候, 试着开发了一个阅读器,非常简单,所以易懂, 目前在本人的G1上跑得还是不错的

 

^-^

 

 

贡献出来给入门者参考:

 

主要问题:

 

1. 如何处理cancel事件

 

2. ListAdapter的使用

 

3. 文本编码.

 

资源下载地址:

 

http://download.csdn.net/source/1713476

 

刚入手的同学可能在导入Android的工程或者某些sample的时候无从下手,

 

因为单单靠Eclipse import project解决不了所有的问题。***方案为通过Eclipse 的向导, 将已经存在的代码工程,

 

再创建成一个新的工程, 如图所示的: create project from existing source选项

 

利用已经存在的代码工程重新创建新工程

 

 

为了方便大家入门,今天对代码做一下标注.

 

1. Android程序的进入点

 

不要妄图像学习C或者Java的入门一样, 有一个main函数供你进入, Android的应用程序运行在一个框架中, 因此main进入点 函数被层层包裹,探寻这个进入点函数,实在是没有多大的价值(这就跟我们用Visual c++去写MFC程序一样, 看到的不是main函数, 唯有寂寞...)

 

Android框架做得比较精妙:

 

1. 应用的各个功能,都被切割成一个个的Activity对象

2. Activity都在AndroidManifest.xml这个xml中注册, 并且规定那个Activity是启动Activity

3. Activity 之间是可以通信的

 

 

 

 

以本文的代码为例, AndroidManifest.xml是这样的:

 

 

  1.  <application android:icon="@drawable/reader" android:label="@string/app_name">  
  2.      <activity android:name=".TxtReader"  
  3.                android:label="@string/app_name">  
  4.          <intent-filter>  
  5.              <action android:name="android.intent.action.MAIN" />  
  6.              <category android:name="android.intent.category.LAUNCHER" />  
  7.          </intent-filter>  
  8.      </activity>  
  9.      <activity android:name=".ListAllFileActivity" android:label="@string/app_name">  
  10. <intent-filter>  
  11.     <action android:name="com.ostrichmyself.txtReader.ListAllFileActivity" />  
  12.     <category android:name="android.intent.category.DEFAULT" />  
  13. </intent-filter>  
  14. lt;/activity>  
  15. <activity android:name=".ViewFile" android:label="@string/swich_code">  
  16. <intent-filter>  
  17.     <action android:name="com.ostrichmyself.txtReader.ViewFile" />  
  18.     <category android:name="android.intent.category.DEFAULT" />  
  19. </intent-filter>  
  20. lt;/activity>  
  21.  </application>  

 

 

很好奇,为什么会有三个Activity? 大致的思路是这样的:

1. 进入应用程序的时候,需要有一个Button,选择一个目录

2. 浏览目录

3. 选中文件的浏览目录之后,需要呈现Txt文件的内容

 

可能大家会觉得奇怪, 为什么按照这样的思路去划分Activity,这样会不会造成管理Activity的困难?

回答这个疑问前, 看看Activity的划分标准是什么,这里牵涉到界面的知识:

1. 每个Activity都表征了一种形式的界面, 比如你的应用程序中有多少个不同的界面,就将出现多少个不同的Activity

2. Activity通过加载一个界面文件xml, 来表征界面的特点

为什么要这么做?

原因是,界面的绘制牵涉到系统资源的调配,手机终端不同于PC,手机系统资源紧缺, 销毁重绘这样耗时费劲的工作,不宜重复进行。因此Android中将这些不同的界面绑定到不同的Activity中,当手机由一种风格的Activity切换到另外风格的Activity时,节省时间和系统资源。

 

程序如何实现Activity的切换?切换时,如何夹带信息?

 

  1. protected void onListItemClick(ListView l, View v, int position, long id) {  
  2.         Intent intent = new Intent(ListAllFileActivity.this, ViewFile.class);  
  3.         bundle = new Bundle();  
  4.         File file = fileNameList.get(position);  
  5.         if (file.isDirectory())  
  6.         {  
  7.             File[] f = file.listFiles();  
  8.             fill(f);  
  9.         }  
  10.         else {  
  11.             bundle.putString(fileNameKey, file.getAbsolutePath());  
  12.             intent.putExtras(bundle);  
  13.             startActivityForResult(intent, 0);  
  14.         }  
  15.     }  

 

 

Intent构造下一个将要出现的Activity, 并夹带 Bundle(); 然后Activity类中提供了startActivityForResult的方法,让你启动, 够简单吧!

 

在将要启动的Activity中oncreate方法启动,将Bundle的值取出来, 搞定.

 

整个流程大致可以这样描述:

 

                       Bundle
Activity被触发---------------> 加载Bundle -----> 加载GUI及其Layout(XML或者自己写Layout)

----> 展示GUI----> 触发GUI事件 ---> 其他Activity 被触发----> 继续....

 

菜单布局等细节, 实在没什么更多的内容。

 

Android的布局方式很赞,采用了HTML的配置布局方式,非常不错, 界面本来就是配的,而不是代码写的。 所以J2ee转业过来的同学们, 这个难度实在是太小了。

 

另外从Eclipse RCP开发过来的同学们, plugin.xml这个是再熟悉不过的了, 所以你们转过来学习Android的布局和配置管理,应该也是轻松加愉快了。

 

后面深入补充下Activity的知识。 界面这块,有时间再探索下。

责任编辑:冰凝儿 来源: http://blog.csdn.net/ostrichmyself/article/details
相关推荐

2013-10-30 22:10:28

Clouda程序

2022-09-27 18:31:42

Komikku开源日漫阅读器

2011-06-14 15:32:26

Android视频教程

2013-06-14 17:16:44

WP开发Windows PhoWP应用

2023-05-19 08:49:58

SQLAlchemy数据库

2009-06-26 16:07:43

MyEclipse开发Hibernate程序

2012-05-25 15:20:38

XNA

2024-03-13 13:53:10

C++程序开发

2010-03-25 16:04:56

Python程序执行

2013-12-19 09:46:04

垃圾收集器

2017-04-11 13:31:40

阅读器开源RSS

2019-12-31 08:00:00

DebianLinuxApple Swift

2011-06-08 10:24:38

Windows Pho 应用程序

2011-06-24 13:38:32

QT 编译 安装

2011-09-09 10:19:13

2023-06-01 08:24:08

OpenAIChatGPTPython

2011-06-08 10:01:36

Windows Pho 应用程序

2022-11-01 07:23:55

Dockernetcore程序

2022-10-17 10:28:05

Web 组件代码

2022-07-20 10:02:34

代码开发阅读
点赞
收藏

51CTO技术栈公众号