zoukankan      html  css  js  c++  java
  • .net开发者对android开发一周的学习体会

    .net开发者对android开发一周的学习体会

     春节期间,相对比较闲,上班时也没什么事情做。利用这一周的时间,简单的学习了一下移动方面的开发。主要是针对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语句)。

      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. 网络数据的异步获取和文件的读写

      正在学习中…

     
     
     
  • 相关阅读:
    Python3之random模块常用方法
    Go语言学习笔记(九)之数组
    Go语言学习笔记之简单的几个排序
    Go语言学习笔记(八)
    Python3之logging模块
    Go语言学习笔记(六)
    123. Best Time to Buy and Sell Stock III(js)
    122. Best Time to Buy and Sell Stock II(js)
    121. Best Time to Buy and Sell Stock(js)
    120. Triangle(js)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2917512.html
Copyright © 2011-2022 走看看