初识android

确定学习android之后,开始动手,跟之前做过android的同事,要了开发环境和一本电子书《深入浅出Android--Google手持设备应用程序设计》。书很薄只有一百多页,周六用一天时间在家一边看一边敲例子,一天下来,已经可以写个身高体重BMI计算的了。有了初步的掌握之后,规划下要做个什么App呢,最好涉及多一些内容,例如多线程、定时器、网络访问,最终敲定做个聊天工具,服务器可以在网上找个jsp的服务器,用二级域名,这样最好部署(这个时候我还不了解,当前火热的各种云应用,公网的服务器可以放在云上,貌似也不用花很多钱)。

2.1 在线聊天软件的规划

我这个在线聊天App只实现一些最基本功能,包括:两个用户之间对话,可以广播对话,可以多个人之间对话 ,简便起见对话内容只包括文本。设计上,服务器用jsp的网站,用jsp的内置对象缓存数据来模拟服务器,客户端通过http的get/post和服务器交互。脑海中想了下,大的结构很清晰,但是技术细节一个都不会呢,哈哈,这就是剩下的事情了,可以开始下一步了。
系统原理:
当然了这样的设计有一些问题,但是不影响实现规划的几个基本功能。

2.2 初步掌握的android内容

经过一天的学习,初步掌握了android开发中一些基本的内容,包括:
  • 搭建android开发环境;
  • android工程目录结构,src源码文件,res资源文件,R.java等;
  • Activity,Activity和UI布局文件的绑定,通过R.java引用布局xml的控件;
  • 学会了给Button添加响应new onClickListener;
  • 对java语言有了初步的使用和适应,初步感觉java比c++写程序要流畅很多;
  • 几个最基本android控件及用法,包括textview、editview、button。

3.在线聊天App

3.1 服务端开发

服务器端使用jsp的内置对象application,application在WebApp应用启动后一直存在,所以可以用application保存一个类对象,这个类对象执行所有服务器相关任务,进而达到模拟服务器的效果,经过测试该方式完全可行。jsp端初步的模块设计,各个类。服务器端和客户端接口,定义一个xml格式,提供公共接口类生成xml字符串、逆向解析xml字符串。经过一周的调试,服务器端终于可以在浏览器中验证功能了,剩下就是android搭建一个客户端了,核心的服务终于完成。经过服务器端jsp的开发,编写了几个java类,用了HashMap、ArrayList等数据结构,再次体会到java写程序很流畅。工程目录结构:
 

3.2 单元测试

服务器测试成功,那么应该写几个类测试服务器,算作是单元测试。编写Java控制台程序,编写IMServer类与服务器通过HttpClient类交互,完成网络访问相关,验证与服务器的交互。单元测试代码结构。

3.3 App开发

客户端开始,功能前面已经确定好,然后脑海中规划一个初步的界面:有几个切换按钮,一个切换当前增在聊天的,一个切换在线的用户,一个是当前用户的基本信息,嗯差不多就这个界面吧。但是呢,我啥都不会呢,先找android的书籍看看,初略的浏览一本书提到了android的控件,什么progress、listView、看起来对我有用,好吧先熟悉下控件使用,用几天休息时间敲了几个控件的例子,初步完成技术预研。
初步规划的App的软件模块
  

3.4 App各分界面

有了一定的控件使用基础之后,开始编写在线聊天App的各个分界面。
主界面TabActivity切换显示三个Activity,会话Activity,服务器用户Activity,我的信息Activity,对话Activity初步这几个,每个Activity都不熟悉,在网上搜相关控件界面,自己改,把界面相关技术预研完成。界面布局结构:
  
清单文件:

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.mybmi"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-sdk
  7. android:minSdkVersion="8"
  8. android:targetSdkVersion="18" />
  9. <uses-permission android:name="android.permission.INTERNET" />
  10. <application
  11. android:allowBackup="true"
  12. android:icon="@drawable/ic_launcher"
  13. android:label="@string/app_name"
  14. android:theme="@style/AppTheme" android:debuggable="true">
  15. <activity
  16. android:name="com.example.mybmi.LoginActivity"
  17. android:label="@string/app_name" >
  18. <intent-filter>
  19. <action android:name="android.intent.action.MAIN" />
  20. <category android:name="android.intent.category.LAUNCHER" />
  21. </intent-filter>
  22. </activity>
  23. <activity android:name="MainActivity"></activity>
  24. <activity android:name="MainTabActivity"></activity>
  25. <activity android:name="TalkingListActivity"></activity>
  26. <activity android:name="TalkingActivity"></activity>
  27. <activity android:name="UserListActivity"></activity>
  28. <activity android:name="UserInfoActivity"></activity>
  29. <activity android:name="UserIcoList"></activity>
  30. </application>
  31. </manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.mybmi"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><uses-permission android:name="android.permission.INTERNET" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" android:debuggable="true"><activityandroid:name="com.example.mybmi.LoginActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name="MainActivity"></activity><activity android:name="MainTabActivity"></activity><activity android:name="TalkingListActivity"></activity><activity android:name="TalkingActivity"></activity><activity android:name="UserListActivity"></activity><activity android:name="UserInfoActivity"></activity><activity android:name="UserIcoList"></activity></application></manifest>

3.5 界面合并

将前面预研的各个界面整合到一起,加入Activiyt的调用代码,赋值一些模拟数据,之后整个App可以跑起来了。在AVD中执行,有登陆,有在线用户列表,有当前会话列表,有个人信息页,点击会话列表内容弹出对话页,已经是一个在线聊天App。但是呢此时还没有何服务器交互,下一阶段完成服务器访问调用的代码。

3.6 服务器端联调

经过前面阶段App终于要和服务器通信了,这才是一个真是的在线聊天软件。当然和服务器联合调试是比较费时的,界面App有了真实数据后,各种问题都出现了,刷新不正常,数据没显示,类设计不合理等等。经过一周的大量修改调试完成软件功能,最终代码结构:

3.7 界面美化

说是美化其实只作了最简单的调整,修改界面背景,按钮背景等。调整后仍然很难看,但是呢顾不了这么多了,发布到App市场吧。界面截图
    

3.8 发布

至此整个App终于算是达到预期的目前,实现预期的功能。虽然是个学习目的App,但是发布到App市场,才可以认为这件事情的完成依据。这里选百度开发者中心,注册帐号验证等等上传发布了这个很挫的App。这件事情算是有了个完美的结束。

4 源码

源码下载地址

5 后记

5.1关于Android

Android开发比windows MFC开发方便很多,没有大量的宏定义,纯粹的面向对象,UI布局很容易设计界面。
整理这个月的学习的Android开发内容:
  • 搭建Android开发环境,建立Android工程,添加类、布局、自加入字符串,引用jar库;
  • 建立AVD模拟手机,配置参数等等;
  • 布局方面,线性布局(水平、垂直),线性布局应该是最好用的布局,也最容易设计界面;
  • 布局xml,Android的界面设计很象Html,我也在怀疑Android的界面是否在编译时没有生成界面内容,而是在执行时解析界面元素;
  • R.java用于引用资源中的各种资源,Android会给每个资源分配一个id,这个Id是自动分配的,刷新下工程就可以;
  • Activity可以认为是窗口界面,Activiyt间的交互:startActivity、Bundle、Inent、setResult;
  • Activity的可重写基类方法,onActivityResult接收另一个Activity传递过来的值;
  • 所有的控件都是View,View类提供的基本的一些方法,如显示方面:设置字体、设置背景等等;
  • TextView、EditView、Button、ImageButton;
  • ListView用adapter管理ListView的数据,BaseAdapter;
  • TabHost,加入Tab页签,Tab页制定一个Activity;
  • 为控件添加点击等事件侦听,例如:Button.OnClickListener onClick = new Button.OnClickListener(){......};
  • 线程,Handler是Activity中处理Message的类;
  • 调试App,包括Log类,Debug。Toast弹出信息也可以作为一种调试手段。
目前还没使用的一些方面:
Android的服务,其他几种布局(表格布局、绝对布局、相对布局),使用样式。

5.2关于Java

Java语言确实很强大,难怪很多人追捧,通过这个月学习到的一些内容:
  • Java语言编码风格,例如Java中大括号放在与代码同一行,C++会另起一行;
  • 所有类都是的积类都是Object,所有任何对象都可以转为Object。在ArrayList中插入元素取出元素等等;
  • 用了两个数据结构ArrayList和Hashmap,也挺好用的;
  • Java中所有类实例必须new,也就相当于所有对象都是指针。而C++如果不new那么退出作用域自动析构;
  • 在实现App是用到interface,Java中不允许继承多个类,但是可以实现多个interface。Java认为继承多个类是设计不合理,所以从语言层面禁止多继承;
  • Java类都有丰富的异常信息,根据异常可以定位到代码问题。并且代码调用了一个会强制抛异常的方法,调用代码里面必须catch该异常。
Java语言还有很多很多内容,现用现学吧。

5.3关于Eclipse

Android能成功的另一个因素,是有一个强大的开发工具Eclipse,各种视图窗口,代码提示。而其没有C++的编译,所有代码语法错误、警告都是实时提示。

5.4尾声

经过近一个月的努力,终于发布了自己的App,写了这篇文章,从android开发一无所知到已经基本入门,自己的初衷目标也已经达成,释然了。与大家分享

在线聊天App研发说明(android学习总结)相关推荐

  1. 基于Java的在线聊天APP系统分析及设计

    基于Java的在线聊天APP系统分析及设计 目录 基于Java的在线聊天APP系统分析及设计 1 一. 需求分析 3 核心用户分析 3 系统的主要功能的概述 3 项目操作流程图 4 功能详解 4 登录 ...

  2. 在线打包app平台,Android春招实习面试经验汇总

    免费在线制作App的无线应用开发工具集合 -追信魔盒成就全球最大的手机软件在线制作平台 不会编程?教你用开发工具制作高下载量的App! 现在很多站长,商家和个人都想自己开发优质的App,利用高下载量去 ...

  3. 基于Vue+Java实现的在线聊天APP系统设计与实现

    全套资料下载地址:https://download.csdn.net/download/sheziqiong/85595798 一.需求分析 1.核心用户分析 在线聊天系统主要针对一些年轻用户群体以及 ...

  4. Android仿微信在线聊天app(含服务端)

    功能描述: 本系统带服务器端.服务器端代码是javaweb.手机端主要实现了用户注册,登录,添加好友,修改个人信息,发送文字消息等功能,适合新手学习app和服务器端交互原理.搭建方法请看入门教程菜单中 ...

  5. UI设计干货素材|聊天APP界面,临摹学习进步快

    在日常工作和生活中,大家见到过最多的界面应该就是聊天界面了.说到聊天界面,内心浮现出的一定是你一言我一语的气泡来往,有没有其他的设计方式呢?或者,要注意什么呢? 免费聊天应用程序模板 Mensaje ...

  6. 即时通讯在线聊天APP开发解决方案

    即时通讯是目前移动端最为流行的通讯方式,各种各样的即时通讯软件也层出不穷:服务提供商也提供了越来越丰富的通讯服务功能,打造一个实时通信系统,允许两人或多人使用网络实时的传递文字消息.文件.语音与视频交 ...

  7. 视频聊天app源码Android实现QQ登录功能

    在AndroidManifest.xml的application标签中添加一下两个activity. <uses-permission android:name="android.pe ...

  8. python 在线编程 实现_Python进阶开发之网络编程,socket实现在线聊天机器人

    系列文章 本文目录 .什么是socket? 说到网络编程,难免要提到socket? 那什么是socket呢,中文名叫"套接字",更难理解了吧. 通俗来讲,socket表示一个网络连 ...

  9. 基于android的即时通讯APP 聊天APP

    基于android的即时通讯APP 或者 聊天APP 一 项目概述 该项目是基于Android 的聊天APP系统,该APP包含前台,后台管理系统,前台包含用户通讯录,用户详情,用户聊天服务,用户二维码 ...

最新文章

  1. python 元组和列表区别_Python 基础(六):列表与元组
  2. 递增三元组蓝桥杯c语言,第九届蓝桥杯_递增三元组(枚举的优化思路)
  3. 112.局部变量和全局变量在内存中是怎样存储的?113.WLAN无线传输协议
  4. Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章
  5. fatal error LNK1281: 无法生成 SAFESEH 映像
  6. 在条码打印软件上如何选择TSC TTP-244Pro打印机
  7. 无线安全破解软件汇总和破解技术资源汇总
  8. 上帝掷骰子吗–量子物理史话
  9. Halcon常见错误
  10. 盘点PS使用小技巧。
  11. 揭秘北京龙泉寺,连清华北大学子都排队出家的神秘科研组织
  12. Android 自定义下拉菜单的实现(基于PopupWindow+RecyclerView)
  13. like not like
  14. 怎么开qq远程连接服务器,QQ远程协助出现权限问题该怎么处理?不用慌这样保证解决...
  15. 尚德SEP英语测试被部分国际高校认可为本硕入学测试
  16. 什么是分布式事务Seata?Seata的几种事务模式详解
  17. crypto-js aes 加解密
  18. CAD明细表转EXCEL
  19. 【转】 男人二十岁后应该学会的习惯
  20. 固定资产管理系统比Excel资产管理好在哪儿呢?

热门文章

  1. 为什么买了款正版杀毒软件?
  2. 揭开意识的奥秘:兼谈认知相对论纲领
  3. EVE-NG使用手册学习
  4. 怎么修改图片上的文字(photoshop技巧)
  5. 【转】通过JAVA获取优酷、土豆、酷6、6间房等视频
  6. 苹果支付 apple Pay
  7. python excel格式,Python 如何写入Excel格式和颜色
  8. Android日记01
  9. 认识神经网络:卷积,归一化,优化和语料
  10. UHF VHF等相关概念