Code Monkey home page Code Monkey logo

android-app's Introduction

android-app

开源**社区 Android 客户端项目简析

注:本文假设你已经有Android开发环境

启动Eclipse,点击菜单并导入Android客户端项目,请确保你当前的Android SDK是最新版。
如果编译出错,请修改项目根目录下的 project.properties 文件。
推荐使用Android 4.0 以上版本的SDK:

target=android-15

本项目采用 GPL 授权协议,欢迎大家在这个基础上进行改进,并与大家分享。

下面将简单的解析下项目:

一、项目的目录结构

根目录
├ src
├ libs
├ res
├ AndroidManifest.xml
├ LICENSE.txt
├ proguard.cfg
└ project.properties

1、src目录
src目录用于存放项目的包及java源码文件。

下面是src目录的子目录:

src
├ com.weibo.net
├ greendroid.widget
├ net.oschina.app
├ net.oschina.app.adapter
├ net.oschina.app.api
├ net.oschina.app.bean
├ net.oschina.app.common
├ net.oschina.app.ui
└ net.oschina.app.widget

  • com.weibo.net — 新浪微博SDK源码包
  • greendroid.widget — 快捷菜单栏组件(国外UI库GreenDroid)
  • net.oschina.app — APP启动及管理包
  • net.oschina.app.adapter — APP列表适配器包
  • net.oschina.app.api — API访问包
  • net.oschina.app.bean — APP实体包
  • net.oschina.app.common — APP工具包
  • net.oschina.app.ui — APP界面包
  • net.oschina.app.widget — APP控件包

2、libs目录
libs目录用于存放项目引用到的jar包文件。

下面是libs目录里的jar包文件:

libs
└ commons-httpclient-3.1.jar

  • commons-httpclient-3.1.jar — Apache的HttpClient包

3、res目录
res目录用于存放项目的图片、布局、样式等资源文件。

下面是res目录的子目录:

res
├ anim
├ color
├ drawable
├ drawable-hdpi
├ drawable-ldpi
├ drawable-mdpi
├ layout
├ menu
├ raw
├ values
└ xml

  • anim — 动画效果
  • color — 颜色
  • drawable/drawable-hdpi/drawable-ldpi/drawable-mdpi — 图标、图片
  • layout — 界面布局
  • menu — 菜单
  • raw — 通知音
  • values — 语言包和样式
  • xml — 系统设置

4、AndroidManifest.xml
AndroidManifest.xml用于设置应用程序的版本、主题、用户权限及注册Activity等。

二、项目的功能流程

1、APP启动流程

AndroidManifest.xml注册的启动界面为"AppStart",具体文件为net.oschina.app\AppStart.java文件。启动显示欢迎界面之后,通过意图(Intent)跳转到首页(net.oschina.app.ui\Main.java)。
注:除启动界面之外,其他所有界面都放在src\net.oschina.app.ui包中。

2、APP访问API流程

以首页资讯列表显示访问API数据为例:

1) 初始化控件
首页Activity(Main.java)在onCreate()方法里面加载布局文件(Main.xml),对下拉刷新列表控件(PullToRefreshListView)进行了初始化,并设置了数据适配器(ListViewNewsAdapter)。
注:Main.xml布局文件在res\layout目录下;PullToRefreshListView控件在net.oschina.app.widget包;ListViewNewsAdapter适配器在net.oschina.app.adapter包。

2) 异步线程访问
列表控件初始化后,开启一个线程方法(loadLvNewsData()),该方法中调用全局应用程序类(AppContext)来访问API客户端类(ApiClient)。通过ApiClient以http方式请求服务器的API。返回响应的XML数据,再通过实体Bean(NewsList)解析XML,返回实体(NewsList)给UI控件(PullToRefreshListView)展示。
注:AppContext全局应用程序类在net.oschina.app包;ApiClient API客户端类在net.oschina.app.api包。

3) 解析数据显示
服务得到请求,将返回对应的资讯XML数据,再通过资讯实体类(NewsList)解析XML,返回实体(NewsList)给UI控件(PullToRefreshListView)展示。
注:NewsList实体类在net.oschina.app.bean包。

android-app's People

Contributors

jxsmallmouse avatar openproject avatar oschina avatar seabornlee avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.