有哪些android的开源界面库

author author     2023-03-28     115

关键词:

比较火爆的Android开源库有以下:
1、volley
主要有以下模块:

(1) JSON,图像等的异步下载;
(2) 网络请求的排序(scheduling)
(3) 网络请求的优先级处理
(4) 缓存
(5) 多级别取消请求
(6) 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)2、android-async-http
主要有以下模块:
(1) 在匿名回调中处理请求结果
(2) 在UI线程外进行

(3) 文件断点上传
(4) 智能重试
(5) 默认gzip压缩
(6) 支持解析成Json格式
(7) 可将Cookies持久化到SharedPreferences 3、Afinal框架
主要有四大模块:
(1) 数据库模块:android中的
,使用了线程池对sqlite进行操作。
(2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
(3) 网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。
(4) 图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。4、xUtils框架
主要有四大模块:
(1) 数据库模块:android中的
,一行代码就可以进行增删改查;
(2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
(3) 网络模块:支持同步,异步方式的请求;
(4) 图片缓存模块:加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;5、ThinkAndroid主要有以下模块:(1) MVC模块:实现视图与模型的分离。
(2) ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。
(3) 数据库模块:android中的
,使用了线程池对sqlite进行操作。
(4) http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。
(5) 缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置
(6) 图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
(7) 配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。
(8) 日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印
(9) 下载器模块:可以简单的实现
、后台下载、
、对下载进行控制、如开始、暂停、删除等等。
(10) 网络状态检测模块:当网络状态改变时,对其进行检6、LoonAndroid 主要有以下模块:
(1) 自动注入框架(只需要继承框架内的application既可)
(2) 图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)
(3) 网络请求模块(继承了基本上现在所有的

(4) eventbus(集成一个开源的框架)
(5) 验证框架(集成开源框架)
(6) json解析(支持解析成集合或者对象)
(7) 数据库(不知道是哪位写的 忘记了)
(8) 多线程断点下载(自动判断是否支持多线程,判断是否是重定向)
(9) 自动更新模块
(10) 一系列工具类
参考技术A 一.认识android的架构
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
二.搭建环境
搭建开发环境
对国内的开发者来说最痛苦的是无法去访问android开发网站。为了更好的认识世界,对程序员来说,会翻墙也是的一门技术,带你去领略墙外的世界,好了,不废话了, 国内开发者访问(androiddevtools) 上面已经有了所有你要的资源,同时可以下载到我们的主角framework
但是这样的搭建只能去阅读源代码,我们无法去更进一步去实现自己的rom,我们看到锤子的系统在早期的开放rom是自己从新实现了framework的代码,现在看起来他成功了,所以我们还要去搭建android系统的源码编译环境。
搭建源码编译环境

三.开始主题
在一开始写c程序的时候都有一个运行的入口,比如
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
//这里的main就是应用的入口
int main(int argc, const char * argv[])
return 0;

在计算机网络原理中我们用socket实现一个服务器端,不断的接听客户端的访问,而且他的代码是这样实现的:
#include <winsock2.h>
#pragma comment(lib, "WS2_32.lib")
#include <stdio.h>
void main()

WORD wVersionRequested;//版本号
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);//2.2版本的套接字
//加载套接字库,如果失败返回
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)

return;

//判断高低字节是不是2,如果不是2.2的版本则退出
if (LOBYTE(wsaData.wVersion) != 2 ||
HIBYTE(wsaData.wVersion) != 2)

return;

//创建流式套接字,基于TCP(SOCK_STREAM)
SOCKET socSrv = socket(AF_INET, SOCK_STREAM, 0);
//Socket地址结构体的创建
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//转换Unsigned long型为网络字节序格
addrSrv.sin_family = AF_INET;//指定地址簇
addrSrv.sin_port = htons(6000);
//指定端口号,除sin_family参数外,其它参数都是网络字节序,因此需要转换
//将套接字绑定到一个端口号和本地地址上
bind(socSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));//必须用sizeof,strlen不行
listen(socSrv, 5);
SOCKADDR_IN addrClient;//字义用来接收客户端Socket的结构体
int len = sizeof(SOCKADDR);//初始化参数,这个参数必须进行初始化,sizeof
//循环等待接受客户端发送请求
while (1)

//等待客户请求到来;当请求到来后,接受连接请求,
//返回一个新的对应于此次连接的套接字(accept)。
//此时程序在此发生阻塞
SOCKET sockConn = accept(socSrv, (SOCKADDR*)&addrClient, &len);
char sendBuf[100];
sprintf(sendBuf, "Welcome %s to JoyChou",
inet_ntoa(addrClient.sin_addr));//格式化输出
//用返回的套接字和客户端进行通信
send(sockConn, sendBuf, strlen(sendBuf)+1, 0);//多发送一个字节
//接收数据
char recvBuf[100];
recv(sockConn, recvBuf, 100, 0);
printf("%s\\n", recvBuf);
closesocket(sockConn);


他采用了一个while死循环去监听客户端的请求。

先上源代码
public final class ActivityThread
public static void main(String[] args)
SamplingProfilerIntegration.start();
CloseGuard.setEnabled(false);
Environment.initForCurrentUser();
EventLogger.setReporter(new EventLoggingReporter());
Security.addProvider(new AndroidKeyStoreProvider());
final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);
Process.setArgV0("<pre-initialized>");
Looper.prepareMainLooper();
//从中可以看到为app开辟了一个线程进入了looper之中
ActivityThread thread = new ActivityThread();
thread.attach(false);
if (sMainThreadHandler == null)
sMainThreadHandler = thread.getHandler();

AsyncTask.init();
if (false)
Looper.myLooper().setMessageLogging(new
LogPrinter(Log.DEBUG, "ActivityThread"));

Looper.loop();
throw new RuntimeException("Main thread loop unexpectedly exited");


看到源码失望了,没有一个while循环啊,其实用了他方法实现
//用一个looper的机制循环监听响应
Looper.prepareMainLooper();
Looper.loop();
进一步深入代码
public static void loop()
final Looper me = myLooper();
if (me == null)
throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread.");

final MessageQueue queue = me.mQueue;
Binder.clearCallingIdentity();
final long ident = Binder.clearCallingIdentity();
// 在这里看到了一个循环监听消息
for (;;)
Message msg = queue.next(); // might block
if (msg == null)
// No message indicates that the message queue is quitting.
return;

Printer logging = me.mLogging;
if (logging != null)
logging.println(">>>>> Dispatching to " + msg.target + " " +
msg.callback + ": " + msg.what);

msg.target.dispatchMessage(msg);
if (logging != null)
logging.println("<<<<< Finished to " + msg.target + " " + msg.callback);

// Make sure that during the course of dispatching the
// identity of the thread wasn't corrupted.
final long newIdent = Binder.clearCallingIdentity();
if (ident != newIdent)
Log.wtf(TAG, "Thread identity changed from 0x"
+ Long.toHexString(ident) + " to 0x"
+ Long.toHexString(newIdent) + " while dispatching to "
+ msg.target.getClass().getName() + " "
+ msg.callback + " what=" + msg.what);

msg.recycleUnchecked();

参考技术B 安卓整个系统都是开源的

androidapp开发中常用到哪些开源框架

在前面的课程中,随着对Android体系的了解,已经可以进行正常的Android应用开发了。在Android开发中,同其他工程开发一样,也经常使用一些提高效率的框架,本文我们做一个对比。这些框架,既包括:网络请求框架、也包括图片... 查看详情

wpf的开源项目都有哪些

ModernUIforWPF:http://mui.codeplex.com/利用Wpf实现Win8Modern样式的开源项目wpftoolkit:http://wpftoolkit.codeplex.com/WPF常用的官方开源控件库MVVMlighttoolkit:http://mvvmlight.codeplex.com/一个实现Mvvm模式的轻量级开源框架FluentRibbonControlSuite:http://fluent.codepl... 查看详情

wpf开源项目

...介绍两个比较牛逼的界面库1、MaterialDesignInXamlToolkit Android风格的界面。 2、MahApps.Metro扁平风格的界面。 在使用中如果有问题,可以到“Gitter”的相应房间里和开发者进行交流(英文╭∩╮(︶︿︶)╭∩╮)。  查看详情

计算机图形学开源的库都有哪些,主要用于二维

多了去了,Google三维APIO3D,绘图引擎RRDtool,计算机视觉库OpenCV,图像处理类库CImg,2D图形库AGG,Google图形处理引擎skia,三维图形渲染引擎OGRE,开源图形库FreeImage,3移动设备上的OpenGLOpenGLES,高质量图形图表库MathGL,开源图形库... 查看详情

Android的开源人脸识别[关闭]

】Android的开源人脸识别[关闭]【英文标题】:OpensourcefacerecognitionforAndroid[closed]【发布时间】:2011-10-1303:17:56【问题描述】:使用Android,人脸识别有哪些开源选项。【问题讨论】:查看开放的CV(计算机视觉)库Android端口@opencv.wi... 查看详情

有哪些适合qt开发使用的开源gis软件

qt是开发界面的一套成熟的框架,用的是c/c++开源gis分两种,一种是本地的软件,一种是web服务,就是可以通过网络通信来获取信息的前者的话,推荐qgis,这是用qt开发的gis软件,其他用c/c++开发的软件应该也没有什么太大问题如... 查看详情

有哪些适合qt开发使用的开源gis软件

qt是开发界面的一套成熟的框架,用的是c/c++开源gis分两种,一种是本地的软件,一种是web服务,就是可以通过网络通信来获取信息的前者的话,推荐qgis,这是用qt开发的gis软件,其他用c/c++开发的软件应该也没有什么太大问题如... 查看详情

是否有适用于 Android 和 iOS 的 OCR 开源库或 sdk(免费)? [关闭]

】是否有适用于Android和iOS的OCR开源库或sdk(免费)?[关闭]【英文标题】:IsthereanOCRopensourcelibraryorsdk(free)forAndroid&iOS?[closed]【发布时间】:2012-03-1007:30:26【问题描述】:我正在寻找适用于Android和iOS应用的OCR开源库或sdk(免费... 查看详情

对java初学者来说,到底java有哪些高效的开源库?

...,对于很多零基础来学Java的新手来说,到底Java有哪些高效的开源库,可以让他们更好的去运用Java呢?毕竟,运用好这些高效的开源库,在工作上也能更好节省时间,提高效率。接下来,就跟随小... 查看详情

有哪些优秀的android应用开源项目、特效、设计资料推荐?

参考技术A安卓选择器类库AndroidPicker:安卓选择器类库,包括日期及时间选择器(可设置范围)、单项选择器(可用于性别、职业、学历、星座等)、城市地址选择器(分省级、地级及县级)、数字选择器(可用于年龄、身高、... 查看详情

js插件都有哪些

除了jquery还有哪些不是插件,应该说是JS框架。DojoDojo是目前最为强大的JS框架,它在自己的Wiki上给自己下了一个定义,Dojo是一个用JavaScript编写的开源的DHTML工具箱。Dojo很想做一个“大一统”的工具箱,不仅仅是浏览器层面的,... 查看详情

js插件都有哪些

除了jquery还有哪些不是插件,应该说是JS框架。DojoDojo是目前最为强大的JS框架,它在自己的Wiki上给自己下了一个定义,Dojo是一个用JavaScript编写的开源的DHTML工具箱。Dojo很想做一个“大一统”的工具箱,不仅仅是浏览器层面的,... 查看详情

python中数据可视化经典库都有哪些?

Python有很多经典的数据可视化库,比较经典的数据可视化库有下面几个。matplotlib是Python编程语言及其数值数学扩展包NumPy的可视化操作界面。它利用通用的图形用户界面工具包,如Tkinter,wxPython,Qt或GTK+,向应用程序嵌入式绘图提... 查看详情

android上可以开发离线地图的开源软件都有哪些

androidstudio(谷歌自己的android的IDE开发工具),现在已经2.0版本了下载地址https://developer.android.com/index.html当然比较经典的是eclipse,下载地址http://www.eclipse.org/downloads/参考技术A之前百度API是提供离线地图的,听说现在不行了 参考... 查看详情

android开源游戏引擎都有哪些?

参考技术AAndroid开源游戏引擎是Android游戏开发的基础,选择一个好的Android游戏开发的引擎能让更好的来开发游戏,下面就简绍几个Android开源游戏引擎。1、AngleAngle是一款专为Android平台设计的,敏捷且适合快速开发的2D游戏引擎... 查看详情

这种类型的 sql 抽象层的名称是啥,我可以获得哪些 php 开源库?

】这种类型的sql抽象层的名称是啥,我可以获得哪些php开源库?【英文标题】:whatisthenameofthistypeofsqlabstractionlayers,andwhatphpopensourcelibsIcanget?这种类型的sql抽象层的名称是什么,我可以获得哪些php开源库?【发布时间】:2011-11-0309... 查看详情

2020年github上那些优秀android开源库,这里是top10!建议收藏!(代码片段)

...LiquidSwipeLayout添加为保存fragment布局的容器的根布局:<androidx.constraintlayout.widget.ConstraintLayout?????xmlns:android="http://schemas.android.com/apk/res/android"????android:layout_width="match_parent"????android:layout_height="match_parent">????<com.jem.liquidswipe.Liq... 查看详情

materialdesigninxaml-wpf开源控件库

materialdesigninxaml.net/ 今天介绍一个开源的C#WPF开源控件库,非常漂亮,重点是开源哦WPF做桌面开发是很有优势的,除了微软自带的控件外,还有很多第三方的控件库,比如收费的DevExpressForWPF、TelerikForWPF等,及Github上开源免费... 查看详情