春节期间,相对比较闲,上班时也没什么事情做。利用这一周的时间,简单的学习了一下移动方面的开发。主要是针对android,其实我对IOS更感兴趣 (因为我用iphone),苦于暂时没有苹果电脑,只能把它放到以后学习。我的工作中暂时没有用到移动方面的开发,自己以前也一直做.net方面的应用。在这里以一个.net开发人员的思维记一下对android开发学习中的一点自己的心得和体会。初学者的胡言乱语,高手请一笑而过。

  1. 开发环境搭建

先下载JDK安装。对于android的SDK和eclipse,可以直接到android的网站(http://developer.android.com/sdk/index.html#download )上下载,它已经把eclipse封装好了,下载来可以直接使用,不需要配置android SDK。

对于模拟器,我推荐一个叫BlueStack的,很好很强大,比eclipse上带的AVD的速度快多了。唯一的缺点就是屏很大,好像不能调整屏的尺寸。

2. android项目结构

对于整个android项目,一般我们需要关注的是常用的两个目录和一个文件。

  • src目录,所有的java代码都在这个目录下。
  • res目录,所有的资源文件都在这个目录下。
  • AndroidManifest.xml文件,系统的配置信息,很重要的一个文件。系统中一些功能和页面的授权都要在这里定义。有时一些功能或页面不能成功调用,可以首先去检查一下是否在该文件中授权了。

3. Activity

android中最基本的任务对象,我把它简单的理解成.net开发的窗体或页面。一个Activity上可以有多个view,所有的控件(widget)都是从view中继承来的。Activity的布局有两种方面,一种是用layout文件来实现,代码中用setContentView加载相应layout文件,相当于一个画好控件的form;而另一种是动态的用代码实现布局,好比.net中的动态生成的页面。

4. Intent

两个activity间的通信就通过intent了。我把它理解成类似asp.net中的request + response对象。Intent中可以传递一个或多个数据,多个数据的传递一般打包成一个Bundle。Intent用putExtras方法加载传递的信息。而子窗体可以用getIntent得到传过来的intent。

  • 用startActivity(intent)直接打开一个不需返回值的子窗体。
  • 用startActivityForResult打开一个要返回值的子窗体。子窗体中用setResult(RESULT_OK, intent)设定返回值,父窗体需要重载onActivityResult方法 得到返回信息。
  • 利用intent可以调用系统功能,比如邮件,短信,电话,联系人等等。调用系统功能或窗体需要Url,比如下面是电话功能。
Uri uri = Uri.parse("tel:13800138000"); Intent it = new Intent(Intent.ACTION_DIAL, uri); startActivity(it);

5. 资源文件(resource)

Android中的资源文件很强大,图片,描述文本,页面布局,风格等都可以放到资源文件中。在程序中用R对象可以取到各资源对应的id,这个id是系统自动产生的一个常量,你可以在gen目录下的R.java下找到相应的定义。在程序中用getResources()加R对象可以取得相应的资源。

6. GridView和ListView的使用

程序离不开数据,而一般多数据界面离不开Grid或List。Android中的这两种控件也跟.net的DataGrid和DataList类似,需要给他们一个数据源,但它们的数据源就比DataSource要复杂得多,它们的数据源是一个Adapter。通常,我们需要重写一个基于BaseAdapter的子类。GridView的项很类似.net中DataGrid的模板列,子项上可以加很多的控件。这些控件的定义的和数据绑定需要在Adapter中的getView方法中实现。

  • 写一个Adapter类,Adapter所需要的数据,通常我们是用一个ArrayList传给它。而在这个类中,最主要的就是重写getView方法。每个GridView和ListView的项的表现方式就在这个方法中定义的。在这个方法里,你可以为每个项加控件,或者控件所对应的事件。
  • 数据绑定。把数据源(通常为ArrayList)传给一个Adapter,GridView或ListView用setAdapter去绑定这个Adapter。
  • 数据项发生了变动,用Adapter的notifyDataSetChanged方法去刷新控件。

7. SQLite

SQLite我只是简单的使用,感觉它的语法是用标准的SQL语法,但我只发现它的table功能,没有发现有类似视图和存储过程的功能。由于数据是存在你的手机上某个地方,不像SQL server等数据,我们没法事先创建一个数据库。所以通常的做法是写一个自己的DBOpenHelper,它是SQLiteOpenHelper的一个子类,我们需要重写它的onCreate和onUpgrade方法。以便第一次使用时创建自己的数据表。(在onCreate中用CREATE TABLE IF NOT EXISTS TABLE语句)。

(注:刚看到一网友的回复,SQLite 可以事先创建一个数据库,方式有点特别,很不错。它是事先准备好一个数据库文件,然后第一次运行时copy到相应的SQLite数据库所在目录。可以参考以下文章。其实同样的道理,我想开始可以准备一个XML或文本文件,程序第一次运行时把XML文件中的内容insert到新建的表中,这样是否更方便呢?更不用关心SQLite文件是放在哪个目录下的。)
http://www.akasuna.com/2012/03/09/embed-sqlite-database-in-the-apk-of-android-distributed-application/

8. TabHost使用

Android中的tab控件很不好用。我想写一个底部多个选项,点不同选项打开不同页面的功能,很不好实现。好不容易用TabHost实现了,发现一个很大的问题就是,打开的tab页面,再跳转到另一个子页面去,底下的tab就全都不见。最后查了很多资料,说用GroupView或Fragment可以解决,Fragment我还没有学到,参考了网上一篇文章,用GroupView实现了

http://hkp.iteye.com/blog/1185482

9. PhoneGap

很强大的一个东西,号称是多平台开发架构。我用它来写了几个简单的页面,非常好实现。可以做到真正以html5 + javascript写android程序,它可以用javascript调用android API,比如调用联系人数据,电话,短信,摄像头,SQLite数据库等。特别是加上jQuery mobile,写一些基于网络数据的程序,非常简单,页面也很漂亮。但用它写的页面,我在模拟器上试了,好象有将近一秒钟的延迟,速度还是比原生程序差很多。

10. 网络数据的异步获取和文件的读写

正在学习中…

评论列表
 

#1楼 2013-02-19 17:11 walkline 

用PhoneGap开发的web app 速度慢

#2楼 2013-02-19 17:13 IT小崽 

不错。。很强大!我还没去弄Android呢。前些日子弄了下Window Phone的开发

#4楼[楼主] 2013-02-20 08:30 飞不动 

@李小超
引用你错了,SQLite 可以事先创建一个数据库

http://www.akasuna.com/2012/03/09/embed-sqlite-database-in-the-apk-of-android-distributed-application/

学习了,很不错的资料。谢谢!

#5楼 2013-02-20 08:47 李小超 

SQLite文件所放的目录名,其实就是 【/data/data/{app包名}/databases/】,是固定死的,明显预先准备好包含数据的数据库方便啊。

如果数据较多,几万条数据甚至更多,你那种方法插入数据时候估计太耗时了

(转).net开发者对android开发一周的学习体会的更多相关文章

  1. Android开发技术周报183学习记录

    Android开发技术周报183学习记录 教程 Android性能优化来龙去脉总结 记录 一.性能问题常见 内存泄漏.频繁GC.耗电问题.OOM问题. 二.导致性能问题的原因 1.人为在ui线程中做了 ...

  2. Android开发技术周报182学习记录

    Android开发技术周报182学习记录 教程 App安全二三事 记录 为什么要安全 App的移动安全主要包括下面几种: 密钥破解,导致本地加密数据被盗取. 通信密钥破解,导致接口数据被盗取. 伪造接 ...

  3. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  4. (转).net开发者对android第二周的学习体会

    这一周相对没有春节时这么闲了,白天也比较多的工作要做,每天晚上又要被我三岁的女儿折腾到十点, 实在没有多少时间学习.在前一周的基础上,这周我试着自己练习写了一个个人管理的android的程序,主要实现 ...

  5. Android开发----RecyclerView视图的学习

    RecyclerView RecyclerView是什么? RecyclerView是如今Android开发中最常用的控件,其相较于ListView和GridView的功能更为强大,优化了两者的各种不 ...

  6. 给iOS开发者的Android开发建议

    本人从事iOS应用开发已经5年有余,直到现在还总是刻意回避Andriod应用的开发.但是不管你信不信,安卓开发还是很有意思的,从iOS转向Android应用开发的跨度并没有你想象的那么大. 现在我把在 ...

  7. Android开发Fragment的使用学习

    基本概念 Fragment是Android3.0(API11)提出的概念,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6.所以在开发中要注意不要导错包 导 ...

  8. Android开发之布局的学习

    FrameLayout-帧布局 实现效果: 代码: <?xml version="1.0" encoding="utf-8"?> <Frame ...

  9. PIE 插件式开发小笔记__PIESDK学习体会

    基于PIE.NET-SDK插件式二次开发文档笔记:  PIE 插件式开发配置文件: 它里面一行如下:      理解上一行'Item'关系->    library:为插件类名(程序集名称+后缀 ...

随机推荐

  1. Android-版本与api对应关系图

    Code name Version API level Lollipop 5.1 API level 22 Lollipop 5.0 API level 21 KitKat 4.4 - 4.4.4 A ...

  2. effectivec++条款18,让接口容易被正确使用,不宜被吴勇

    test* create_test(); shared_ptr<test> create_test();//下面的接口比上面的接口要好 auto_ptr<test> creat ...

  3. php如何实现上传图片文件,并替换

    首先建立两个文件: change.html 和 change.php change.html 文件的表单代码如下: <html><head> <title>chan ...

  4. C语言---volatile(我的工程笔记本)

    一般说来,volatile用在如下的几个地方: 1.中断服务程序中修改的供其它程序检测的变量需要加volatile: 2.多任务环境下各任务间共享的标志应该加volatile: 3.存储器映射的硬件寄 ...

  5. 为什么针对XML的支持不够好?如何改进?

    为什么针对XML的支持不够好?如何改进? 物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurati ...

  6. ubuntu安装过程未设置root密码

  7. tomcat文件夹与文件解析

    今天看到一篇不错的文章,如下: /bin:存放启动和关闭tomcat的脚本文件: /conf:存放tomcat的各种配置文件,比如:server.xml/ server/lib:存放tomcat服务器 ...

  8. InputStream转为byte数组

    InputStream is = request.getSession().getServletContext().getResourceAsStream("/WEB-INF/swdjzbg ...

  9. 开发支付宝支付用DELPHI实现 RSA签名

    近来根据业务需求 在ERP中集成了微信支付,支付宝支付,开发支付宝支付时最大的障碍就是RSA签名,找了很多资料,最终用 下了个libeay32.pas  根据网上资料最终解决了问题 function  ...

  10. C#读取文件高效方法实现

     C# Code  12345678910111213141516171819202122232425262728293031           private void button1_Click ...