【Android学习】Android常用框架

原创 2018年04月15日 15:14:31

1,缓存

1)DiskLruCache

Java实现基于LRU的磁盘缓存。

2,图片

1)Glide(已使用)

图片加载。
Glide 支持拉取,解码和展示视频快照,图片,和GIF动画。

2)Android-Universal-Image-Loader

图片加载。
已停止维护。

3)Picasso

图片加载。

4)Fresco

图片加载。

5)picasso-transformations

为Picasso提供多种图片变换,让图片呈现不同的形状。

6)glide-transformations

综合Glide,让图片呈现不同的形状。

7)android-gpuimage

图片处理。基于OpenGL的Android过滤器,将GPUImage iOS移至Android。

3,网络请求

1)Android Async HTTP

Android异步HTTP库

2)AndroidAsync

异步Socket,HTTP(客户端+服务器),WebSocket,和socket.io库。基于NIO而不是线程。

3)OkHttp

一个Http与Http/2的客户端

4)Retrofit

类型安全的Http客户端

5)Volley

已被墙。
Google推出的Android异步网络请求框架和图片加载框架。

4,网络解析

1)Gson

一个Java序列化/反序列化库,可以将JSON和java对象互相转换

2)Jackson

Jackson可以轻松地将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象

3)Fastjson

Java上一个快速的JSON解析器/生成器

4)HtmlPaser

一种用来解析单个独立html或嵌套html的方式

5)Jsoup

一个以最好的DOM,CSS和jQuery解析html的库

5,数据库

1)OrmLite

JDBC和Android的轻量级ORM java包

2)Sugar

用超级简单的方法处理Android数据库

3)GreenDAO

一种轻快地将对象映射到SQLite数据库的ORM解决方案。

①使用

i>依赖:

// In your root build.gradle file:
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}

// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin

dependencies {
    implementation 'org.greenrobot:greendao:3.2.2' // add library
}

ii>建表:实体类
为需要建表的实体类添加@Entity即可。

@Entity
public class User {
    @Id(autoincrement = true)
    private Long id;
    private String name;
    private int age;
    private String sex;

}

iii>MyApplication初始化

 /*
        通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。

        注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
              所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
         */
        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
        //
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db");
        Database db = helper.getWritableDb();
        DaoSession daoSession = new DaoMaster(db).newSession();

iv>使用

AppApplication.getInstances().getDaoSession().insert(user);//插入
UserDao userDao = AppApplication.getInstances().getDaoSession().getUserDao();//读取
UserDao userDao = AppApplication.getInstances().getDaoSession().getUserDao();

QueryBuilder<User> builder = userDao.queryBuilder();
List<User> zhangsan = builder.where(UserDao.Properties.Age.eq(1)).list();

userDao.delete(user);//删除
AppApplication.getInstances().getDaoSession().update(user);//修改

4)ActiveAndroid

以活动记录方式为Android SQLite提供持久化

5)SQLBrite

SQLiteOpenHelper 和ContentResolver的轻量级包装

6)Realm

移动数据库:一个SQLite和ORM的替换品

6,依赖注入

1)ButterKnife(已使用)

将Android视图和回调方法绑定到字段和方法上。
ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码。
具体用法查看GitHub。

2)Dagger2

一个Android和java快速依赖注射器。

3)AndroidAnotations

快速安卓开发。易于维护

4)RoboGuice

Android平台的Google Guice。Android上第一个依赖注入框架,已不再受支持。

7,图表

1)WilliamChart

创建图表的Android库

2)HelloCharts

兼容到API8的Android图表库

3)MPAndroidChart(已使用)

一个强大的Android图表视图/图形库。

①X轴坐标线显示不全问题

对于LineChart:

XAxis xl = lineChart.getXAxis();
xl.setSpaceBetweenLabels(1)

对于BarChart:

XAxis xAxis = barChart.getXAxis();
xAxis.setSpaceMax(1);

②数据刷新

barChart.notifyDataSetChanged();
barChart.invalidate();

8,后台处理

1)Tape

一个轻快的,事务性的,基于文件的FIFO的库

1)Android Priority Job Queue

一个专门为Android轻松调度任务的工作队列

9,事件总线

1)EventBus(已使用)

安卓优化的事件总线,简化了活动、片段、线程、服务等的通信

①作用

EventBus就是publish/subscribe消息总线,主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。
可以传递String、class

②三要素

Event:
事件。可以是任何的对象。
Subscriber:
事件订阅者,接收特定的事件。方法以onEvent**开头,一共有四个方法onEvent,onEventMainThread,onEventBackgroundThread,onEventAsync。它们之间的区别在于在不同的线程。等会会有一一举例。
Publisher:
事件发布者,用于通知Subscriber有事件发生,可以在任何的地方发布事件。使用也是简单,只要调用post(Object)方法就可以了。

③区别

onEvent:
事件在哪个线程发布出来的,就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程。
onEventMainThread:
事件无论是从哪个线程发布出来的,都会在UI线程中执行。
onEvnetBackground:
事件是在UI线程中发布出来的,那么就会在子线程中运行,如果事件本来就是子线程中发布出来的,那么就直接在该子线程中执行。
onEventAsync:
使无论事件在哪个线程发布,都会创建新的子线程

④使用

i>传递字符串

EventBus.getDefault().register(this);//接收者
EventBus.getDefault().unregister(this);//接收者
@Subscribe//接收者
public void method(String state){
    switch (state){
        case LoginActivity .Tag:
            finish();
            break;
    }
}
EventBus.getDefault().post(LoginActivity.Tag);//发送者

ii>传递类

public class MessageEvent {
    ...
}//传递类
EventBus.getDefault().post(messageEvent);//发送

@Subscribe(threadMode = ThreadMode.MAIN)
public void XXX(MessageEvent messageEvent) {//接收方(记得写注册和取消注册)
    ...
}

2)Otto

一个基于Guava的增强的事件总线

10, 响应式编程

1)RxJava

JVM上的响应式扩展

2)RxJavaJoins

为RxJava提供Joins操作

3)RxAndroid

Android上的响应式扩展,在RxJava基础上添加了Android线程调度

4)RxBinding

提供用RxJava绑定Android UI的API

5)Agera

Android上的响应式编程

11,Log框架

1)Logger(已使用)

简单,漂亮,强大的Android日志工具。
输出明了,可从日志跳转到源码,不需要设置静态tag。

①使用

Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("wtf!!!!");

②支持格式

支持json、xml、Map、Collection、Array、set格式化输出。
支持Logcat和文件两种日志记录输出方式。

2)Hugo

在调试版本上注解的触发方法进行日志记录

3)Timber

一个小的,可扩展的日志工具

4)Bugly

腾讯推出的一款免费崩溃日志收集统计sdk,可直接通过gradle依赖。
使用很简单,是目前国内免费软件中功能最强大的一款。

12,测试框架

1)Mockito

Java编写的Mocking单元测试框架

2)Robotium

Android UI 测试

3)Robolectric

Android单元测试框架

13,调试框架

1)Stetho

调试Android应用的桥梁,使得可以利用Chrome开发者工具进行调试

14,性能优化

1)LeakCanary

内存泄漏检测工具

2)ACRA

Android应用程序崩溃报告

15,弹框

1)OptionFrame(已使用)

一款Android弹出框、对话框、Dialog、popuwindow。

2)CircleProgressDialog(已使用)

圆形等待弹框。

16,其它功能

1)AndPermission(已使用)

Android6.0以后需要加入权限的时候询问用户。

2)FileDownloader(已使用)

文件下载框架。
注意: 使用下载文件之前,先:FileDownloader.setup(Context)

17,其它控件

1)SwitchButton(已使用)

2)banner(已使用)

图片轮播。

3)CircleProgress(已使用)

各种样式的圆形进度条。

4)SignatureView(已使用)

手写签名控件。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunshineTan/article/details/79947900

android常用框架和设计模式

  • 2017年04月28日 16:42
  • 39KB
  • 下载

Android 常用框架大全

转自:https://segmentfault.com/a/1190000005073746 1. 缓存名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存2.图片加载名称 描述...
  • DeMonliuhui
  • DeMonliuhui
  • 2017-09-05 14:28:36
  • 2850

Android常用的15个框架

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。 转载请注明:文章转载自 开源中国社区 [http://www.oschina.net] ...
  • congmingyizhiha
  • congmingyizhiha
  • 2017-04-10 19:38:01
  • 1101

Android 常用六大框架

  • 2015年06月01日 10:50
  • 22.18MB
  • 下载

Android快速开发,十个最常用的框架

对于Android初学者以及对于我们菜鸟,这些大神们开发的轻量级框架非常有用(更别说开源的了)。 下面转载这10个框架的介绍:(按顺序来吧没有什么排名)。 一、 Afinal官方介绍:Afina...
  • zhang_hongli_li
  • zhang_hongli_li
  • 2015-08-22 14:48:02
  • 11892

Android 常用开源框架汇总

Android 常用开源框架汇总
  • qq_15274383
  • qq_15274383
  • 2017-07-18 16:24:31
  • 555

Android开发使用的常见第三方框架

1.https://github.com/jfeinstein10/SlidingMenuhttp://blog.csdn.net/yangyu20121224/article/details/925...
  • icewst
  • icewst
  • 2014-05-08 09:39:37
  • 10240

9款Android常用的快速开发框架

1、Afinal框架 项目地址:https://github.com/yangfuhai/afinal 项目地址:http://www.oschina.net/p/afinal ...
  • RichieZhu
  • RichieZhu
  • 2015-08-19 23:42:25
  • 1660

Android常用框架大全

QQ交流群:6685241181. 缓存名称描述DiskLruCacheJava实现基于LRU的磁盘缓存2.图片加载名称描述Android Universal Image Loader一个强大的加载,...
  • m0_37314675
  • m0_37314675
  • 2018-03-26 10:41:20
  • 100

android-------开发常用框架汇总

响应式编程RxJavahttps://github.com/ReactiveX/RxJavaRxAndroidhttps://github.com/ReactiveX/RxAndroid消息通信Eve...
  • DickyQie
  • DickyQie
  • 2018-03-24 01:07:53
  • 68
收藏助手
不良信息举报
您举报文章:【Android学习】Android常用框架
举报原因:
原因补充:

(最多只允许输入30个字)