• Stars
    star
    866
  • Rank 52,449 (Top 2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 3 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🌝 MLKit是一个强大易用的工具包。通过ML Kit您可以很轻松的实现文字识别、条码识别、图像标记、人脸检测、对象检测等功能。

MLKit

Download MavenCentral JitPack CI CircleCI API License Blog QQGroup

ML Kit是一个能够将谷歌专业的机器学习知识带到应用中的极其简单易用的封装包。无论您是否有机器学习的经验,您都可以在几行代码中实现您想要的功能。甚至,您无需对神经网络或者模型优化有多深入的了解,也能完成您想要做的事情。 基于现有的API您可以很轻松的实现文字识别、条码识别、图像标签、人脸检测、对象检测等功能;另一方面,如果您是一位经验丰富的ML开发人员,ML Kit甚至提供了便利的API,可帮助您在移动应用中使用自定义的TensorFlow Lit模型。

GIF 展示

Image

因为功能太多,所以仅录制演示了部分功能

你可以直接下载 演示App 体验效果

各Module相关说明

app

示例App:主要用于提供MLKit各个子库的演示效果

mlkit-camera-core

Camera:为各个子库提供相机预览分析的核心库

参见CameraX

mlkit-common

公共库:介于Camera与各个子库之间,为各个字库提供公共业务,从而简化各子库的实现

mlkit-barcode-scanning

条码扫描:通过分析图像能够识别条码的内容信息

参见barcode-scanning

mlkit-face-detection

人脸检测:通过分析图像能够检测到人脸和分析面部轮廓关键点信息

参见face-detection

人脸网格检测:通过分析图像能够检测到人脸网格信息

参见face-mesh-detection

mlkit-image-labeling

图像标签:通过分析图像能够标记一般对象、场所、动物种类、产品等

参见image-labeling

mlkit-object-detection

对象检测:通过分析图像能够检测出图像中的对象的位置信息(一张图最多可以检测五个对象)

参见object-detection

mlkit-pose-detection

姿势检测:通过分析图像能够检测人物摆姿势的关键点信息

参见pose-detection

mlkit-pose-detection-accurate

姿势检测(精确版):通过分析图像能够检测人物摆姿势的关键点信息(精确版的依赖库也略大一点)

参见pose-detection

mlkit-segmentation-selfie

自拍分割:通过分析图像能够将自拍照的人物特征进行分割

参见selfie-segmentation

mlkit-text-recognition

文字识别:识别图像中的文字信息

参见text-recognition

ViewfinderView相关字段说明

属性 属性类型 默认值 属性说明
maskColor color #60000000 扫描区外遮罩的颜色
frameColor color #7F1FB3E2 扫描区边框的颜色
cornerColor color #FF1FB3E2 扫描区边角的颜色
laserColor color #FF1FB3E2 扫描区激光线的颜色
labelText string 扫描提示文本信息
labelTextColor color #FFC0C0C0 提示文本字体颜色
labelTextSize dimension 14sp 提示文本字体大小
labelTextPadding dimension 24dp 提示文本距离扫描区的间距
labelTextWidth dimension 提示文本的宽度,默认为View的宽度
labelTextLocation enum bottom 提示文本显示位置
frameWidth dimension 扫码框宽度
frameHeight dimension 扫码框高度
laserStyle enum line 扫描激光的样式
gridColumn integer 20 网格扫描激光列数
gridHeight integer 40dp 网格扫描激光高度,为0dp时,表示动态铺满
cornerRectWidth dimension 4dp 扫描区边角的宽
cornerRectHeight dimension 16dp 扫描区边角的高
scannerLineMoveDistance dimension 2dp 扫描线每次移动距离
scannerLineHeight dimension 5dp 扫描线高度
frameLineWidth dimension 1dp 边框线宽度
scannerAnimationDelay integer 20 扫描动画延迟间隔时间,单位:毫秒
frameRatio float 0.625f 扫码框与屏幕占比
framePaddingLeft dimension 0 扫码框左边的内间距
framePaddingTop dimension 0 扫码框上边的内间距
framePaddingRight dimension 0 扫码框右边的内间距
framePaddingBottom dimension 0 扫码框下边的内间距
frameGravity enum center 扫码框对齐方式
pointColor color #FF1FB3E2 结果点的颜色
pointStrokeColor color #FFFFFFFF 结果点描边的颜色
pointRadius dimension 15dp 结果点的半径
pointStrokeRatio float 1.2 结果点描边半径与结果点半径的比例
pointDrawable reference 结果点自定义图片
showPointAnim boolean true 是否显示结果点的动画
laserDrawable reference 扫描激光自定义图片
laserDrawableRatio float 0.625f 激光扫描图片与屏幕占比
viewfinderStyle enum classic 取景框样式;支持:classic:经典样式(带扫码框那种)、popular:流行样式(不带扫码框)

引入

Gradle:

  1. 在Project的 build.gradle 里面添加远程仓库
allprojects {
    repositories {
        //...
        mavenCentral()
    }
}
  1. 在Module的 build.gradle 里面添加引入依赖项
//Camera核心 (*必须)
implementation 'com.github.jenly1314.MLKit:mlkit-camera-core:1.4.0'

//--------------------------

//公共库 (可选) (1.3.0新增:当使用到MLKit下面的子库时,需依赖公共库)
implementation 'com.github.jenly1314.MLKit:mlkit-common:1.4.0'

//条码识别 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-barcode-scanning:1.4.0'

//人脸检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-face-detection:1.4.0'

//人脸网格检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-face-mesh-detection:1.4.0'

//图像标签 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-image-labeling:1.4.0'

//对象检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-object-detection:1.4.0'

//姿势检测 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-pose-detection:1.4.0'

//姿势检测精确版 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-pose-detection-accurate:1.4.0'

//自拍分割 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-segmentation-selfie:1.4.0'

//文字识别 (可选)
implementation 'com.github.jenly1314.MLKit:mlkit-text-recognition:1.4.0'

温馨提示

关于MLKit版本与编译的SDK版本要求

使用 v1.2.x 以上版本时,要求 compileSdkVersion >= 33

使用 v1.1.x 以上版本时,要求 compileSdkVersion >= 31

如果 compileSdkVersion < 31 请使用 v1.0.x 版本

使用

快速实现扫描识别主要有以下几种方式:

1、通过继承 BaseCameraScanActivity 或者 BaseCameraScanFragment 或其子类,可快速实现扫描识别。 (适用于大多场景,自定义布局时需覆写 getLayoutId 方法)

2、在你项目的Activity或者Fragment中实例化一个 BaseCameraScan。(适用于想在扫描界面写交互逻辑,又因为项目 架构或其它原因,无法直接或间接继承 BaseCameraScanActivityBaseCameraScanFragment 时使用)

3、继承 CameraScan 自己实现一个,可参照默认实现类 BaseCameraScan,其他步骤同方式2。(高级用法,谨慎使用)

关于 CameraScan

CameraScan 作为相机扫描的(核心)基类;所有与相机扫描相关的都是基于此类来直接或间接进行控制的。

关于 CameraConfig

主要是相机相关的配置;如:摄像头的前置后置、相机预览相关、图像分析相关等配置。

你可以直接库中内置实现的相机配置: CameraConfigAspectRatioCameraConfigResolutionCameraConfig

这里简单说下各自的特点:

  • CameraConfig:默认的相机配置。
  • AspectRatioCameraConfig:根据纵横比配置相机,使输出分析的图像尽可能的接近屏幕的比例
  • ResolutionCameraConfig:根据尺寸配置相机的目标图像大小,使输出分析的图像的分辨率尽可能的接近屏幕尺寸

你也可以自定义或覆写 CameraConfig 中的 options 方法,根据需要定制配置。

这里特别温馨提示:默认配置在未配置相机的目标分析图像大小时,会优先使用:横屏:640 * 480 竖屏:480 * 640;

根据这个图像质量顺便说下默认配置的优缺点:

  • 优点:因为图像质量不高,所以在低配置的设备上使用也能hold住,这样就能尽可能的适应各种设备;
  • 缺点:正是由于图像质量不高,从而可能会对检测识别率略有影响,比如在某些机型上体验欠佳。
  • 结论:在适配、性能与体验之间得有所取舍,找到平衡点。

当使用默认的 CameraConfig 在某些机型上体验欠佳时,你可以尝试使用 AspectRatioCameraConfigResolutionCameraConfig 会有意想不到奇效。

关于 Analyzer

Analyzer 为定义的分析器接口;主要用于分析相机预览的帧数据;MLKit的各个子库皆是通过实现 Analyzer 来检测分析结果的。

关于 BaseCameraScanActivityBaseCameraScanFragment

BaseCameraScanActivityBaseCameraScanFragment 作为扫描预览界面的基类,主要目的是便于快速实现扫描识别。

扫描预览界面内部持有 CameraScan,并处理了 CameraScan 的初始化(如:相机权限、相机预览、生命周期等细节)

CameraScan配置示例

CameraScan 里面包含部分支持链式调用的方法,即调用返回是 CameraScan 本身的一些配置建议在调用 startCamera() 方法之前调用。

如果是通过继承 BaseCameraScanActivity 或者 BaseCameraScanFragment 或其子类实现的相机扫描,可以在 initCameraScan() 方法中获取 CameraScan ,然后根据需要修改相关配置。

示例:

// 获取CameraScan,根据需要修改相关配置
getCameraScan().setPlayBeep(true)//设置是否播放音效,默认为false
        .setVibrate(true)//设置是否震动,默认为false
        .setCameraConfig(new ResolutionCameraConfig(this))//设置相机配置信息,CameraConfig可覆写options方法自定义配置
        .setNeedTouchZoom(true)//支持多指触摸捏合缩放,默认为true
        .setDarkLightLux(45f)//设置光线足够暗的阈值(单位:lux),需要通过{@link #bindFlashlightView(View)}绑定手电筒才有效
        .setBrightLightLux(100f)//设置光线足够明亮的阈值(单位:lux),需要通过{@link #bindFlashlightView(View)}绑定手电筒才有效
        .bindFlashlightView(ivFlashlight)//绑定手电筒,绑定后可根据光线传感器,动态显示或隐藏手电筒按钮
        .setOnScanResultCallback(this)//设置扫码结果回调,需要自己处理或者需要连扫时,可设置回调,自己去处理相关逻辑
        .setAnalyzer(new BarcodeScanningAnalyzer())//设置分析器,如这里使用条码分析器,BarcodeScanningAnalyzer是mlkit-barcode-scanning中的
        .setAnalyzeImage(true)//设置是否分析图片,默认为true。如果设置为false,相当于关闭了扫码识别功能

        // 启动预览(如果是通过直接或间接继承BaseCameraScanActivity或BaseCameraScanFragment实现的则无需调用startCamera)
        getCameraScan().startCamera();


        // 设置闪光灯(手电筒)是否开启,需在startCamera之后调用才有效
        getCameraScan().enableTorch(torch);

布局示例

PreviewView 用来预览,布局内至少要保证有 PreviewView;如果是继承 BaseCameraScanActivityBaseCameraScanFragment 或其子类实现的相机扫描;快速实现扫描功能;

需自定义布局时,通过覆写getLayoutId方法即可;预览控件ID可覆写getPreviewViewId方法自定义;更多代码用法可BaseCameraScanActivity源码或参见下面的使用示例。

示例:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
    <androidx.camera.view.PreviewView 
        android:id="@+id/previewView"
        android:layout_width="match_parent" 
        android:layout_height="match_parent" />
    <!-- 只需保证有布局内有PreviewView即可,然后自己可根据需要添加的控件 -->
</FrameLayout>

如:扫二维码的布局示例 (ViewfinderViewmlkit-barcode-scanning 中的扫描渲染效果视图)

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.camera.view.PreviewView
        android:id="@+id/previewView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.king.mlkit.vision.barcode.ViewfinderView
        android:id="@+id/viewfinderView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ImageView
        android:id="@+id/ivFlashlight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="@dimen/ml_flashlight_margin_top"
        android:contentDescription="@null"
        android:src="@drawable/ml_flashlight_selector" />
</FrameLayout>

条形码检测分析示例(mlkit-bar-code-scanning

支持检测识别的条形码格式主要有:

  • 线性格式:Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, UPC-A, UPC-E
  • 2D格式:Aztec, Data Matrix, PDF417, QR Code
BarcodeDecoder.process(bitmap, object : OnAnalyzeListener<List<Barcode>?> {
    override fun onSuccess(result: List<Barcode>) {
        // 分析成功
    }

    override fun onFailure(e: Exception?) {
        // 分析失败
    }
})

各个module的使用示例

mlkit-camera-core

Camera核心:为各个子库提供相机预览分析的核心库。

如果MLKit支持的衍生库没有满足你的需求,你也可以通过依赖 mlkit-camera-core 去拓展实现任何与相机预览和分析相关的衍生库。

mlkit-common (1.3.0新增)

公共库:介于Camera与各个子库之间,为各个字库提供公共业务,从而简化各子库的实现。

mlkit-barcode-scanning

扫条形码/二维码实现示例:通过直接继承 BarcodeCameraScanActivity 实现的示例 BarcodeScanningActivity

扫二维码实现示例:通过间接继承 BarcodeCameraScanActivity 实现的示例 QRCodeScanningActivity

扫二维码(多个结果)实现示例:通过间接继承 BarcodeCameraScanActivity 实现的示例 MultipleQRCodeScanningActivity

mlkit-face-detection

人脸检测实现示例:通过直接继承 FaceCameraScanActivity 实现的示例 FaceDetectionActivity

多人脸检测实现示例:通过间接继承 FaceCameraScanActivity 实现的示例 MultipleFaceDetectionActivity

mlkit-face-mesh-detection (1.2.0新增)

人脸网格检测实现示例:通过直接继承 FaceMeshCameraScanActivity 实现的示例 FaceMeshDetectionActivity

mlkit-image-labeling

图像标签实现示例:通过直接继承 ImageCameraScanActivity 实现的示例 ImageLabelingActivity

mlkit-object-detection

对象检测实现示例:通过直接继承 ObjectCameraScanActivity 实现的示例 ObjectDetectionActivity

多对象检测实现示例:通过间接继承 ObjectCameraScanActivity 实现的示例 MultipleObjectDetectionActivity

mlkit-pose-detection

姿势检测实现示例:通过直接继承 PoseCameraScanActivity 实现的示例 PoseDetectionActivity

mlkit-pose-detection-accurate

姿势检测(精确版)实现示例:通过间接继承 AccuratePoseCameraScanActivity 实现的示例 AccuratePoseDetectionActivity

mlkit-segmentation-selfie

自拍分割实现示例:通过直接继承 SegmentationCameraScanActivity 实现的示例 SelfieSegmentationActivity

mlkit-text-recognition

文字识别实现示例:通过直接继承 TextCameraScanActivity 实现的示例 TextRecognitionActivity

模型配置(可选)

关于依赖项下载模型(如果选择使用 Google Play Services 中的模型)则可以通过在AndroidManifest中申明配置

<meta-data android:name="com.google.firebase.ml.vision.DEPENDENCIES"
    android:value="ocr" /><!-- To use multiple models: android:value="ocr,model2,model3" -->

如:配置Barcode模型、Face模型、OCR模型等等~

<meta-data android:name="com.google.firebase.ml.vision.DEPENDENCIES"
    android:value="barcode,face,ocr" />

更多使用详情,请查看app 中的源码使用示例或直接查看 API帮助文档

其他

ABI过滤

在Module的 build.gradle 里面的 android{} 中设置支持的 SO 库架构(可选,支持多个平台的 so,支持的平台越多,APK体积越大)

    defaultConfig {
    
        //...
        
        ndk {
            //设置支持的 SO 库架构(开发者可以根据需要,选择一个或多个平台的 so)
            abiFilters 'armeabi-v7a' // , 'arm64-v8a', 'x86', 'x86_64'
        }
    }

JDK版本

需使用JDK8+编译,在你项目中的build.gradle的android{}中添加配置:

compileOptions {
    targetCompatibility JavaVersion.VERSION_1_8
    sourceCompatibility JavaVersion.VERSION_1_8
}

特别说明

关于 mlkit-camera-core

mlkit-camera-core 的核心代码是基于 ZXingLite 抽取后修改而来的,所以在使用上有很多相似之处,特别是 CameraScan 相关的API。 各个 MLKit 相关的 Module 主要是基于 mlkit-camera-core 提供相机的预览帧来做不同的分析处理, 所以如果 MLKit 当前不满足您的需求,您可以自定义拓展去实现; 也可以基于 mlkit-camera-core 去开发各种衍生库。(例如:WeChatQRCode

相关推荐

ZXingLite 基于ZXing库优化扫码和生成二维码/条形码功能,扫码界面完全支持自定义。

WeChatQRCode 基于OpenCV开源的微信二维码引擎移植的扫码识别库。

版本记录

v1.4.0:2023-4-15

  • 优化CameraScan的缺省配置(CameraConfig相关配置)
  • 优化ViewfinderView自定义属性(新增laserDrawableRatio)
  • 更新MLKit相关依赖库版本
  • 更新CameraX至v1.2.2

v1.3.0:2023-2-23

  • 新增公共库(mlkit-common)
  • 优化注释
  • 更新CameraX至v1.2.1
  • 更新Gradle至v7.5

v1.2.0:2022-12-11

  • 新增人脸网格检测(mlkit-face-mesh-detection)
  • 更新MLKit相关依赖库版本
  • 更新CameraX至v1.2.0
  • 更新compileSdkVersion至33

v1.1.0:2022-6-1

  • 更新MLKit相关依赖库版本
  • 更新CameraX至v1.2.0-rc01
  • 更新compileSdkVersion至31
  • 更新Gradle至v7.2

v1.0.3:2021-10-18

  • 更新CameraX至v1.0.2
  • ViewfinderView新增支持显示结果点相关
  • 新增扫二维码有多个结果时可选实现示例(类似于新版微信效果)
  • 文字识别(text recognition)改为静态(即:使用v2)

v1.0.2:2021-8-4

  • 更新CameraX至v1.0.1
  • 优化CameraConfig的一些默认配置

v1.0.1:2021-7-2

  • 更新MLKit相关依赖库版本
  • 优化细节

v1.0.0:2021-4-7

  • MLKit初始版本

赞赏

如果您喜欢MLKit,或感觉MLKit帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 😃

您也可以扫描下面的二维码,请作者喝杯咖啡

关于我

Name: Jenly

Email: jenly1314#gmail.com / jenly1314#vip.qq.com

CSDN: jenly121

CNBlogs: jenly

GitHub: jenly1314

Gitee: jenly1314

加入QQ群: 20867961

More Repositories

1

ZXingLite

🔥 ZXing的精简极速版,优化扫码和生成二维码/条形码,内置闪光灯等功能。扫描风格支持:微信的线条样式,支付宝的网格样式。几句代码轻松拥有扫码功能 ,ZXingLite让集成更简单。(扫码识别速度快如微信)
Java
2,981
star
2

KingTV

📺 【停止维护】高仿全民直播(全民TV),项目采用 MVP + RXJava + Retrofit + OKHttp + Material Design + Dagger2 + Base + Glide + GreenDao构建。因为全民TV已经凉了,导致App已经连不上了。在这里特意向你推荐MVPFrame: https://github.com/jenly1314/MVPFrame 和你值得拥有的MVVMFrame快速开发框架: https://github.com/jenly1314/MVVMFrame
Java
1,604
star
3

AppUpdater

🚀 AppUpdater一个专注于App更新,一键傻瓜式集成App版本升级的轻量开源库。(集成步骤超简单)
Java
876
star
4

WeChatQRCode

⛄ 基于OpenCV开源的微信二维码引擎移植的二维码扫码识别库
C++
570
star
5

CircleProgressView

🎡 CircleProgressView是一个圆形渐变的进度动画控件(支持外环显示刻度,内环随之变化,配置参数完全可配),动画效果纵享丝滑。
Java
430
star
6

WanAndroid

🏄 基于Architecture Components dependencies (Lifecycles,LiveData,ViewModel,Room)构建的WanAndroid开源项目。 你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Java
417
star
7

MVVMFrame

🏰 MVVMFrame for Android 是一个基于Google官方推出的JetPack构建的快速开发框架。从此构建一个MVVM模式的项目变得快捷简单。
Kotlin
357
star
8

ArcSeekBar

🎡 ArcSeekBar 一个弧形可拖动进度条控件。弧形大小,弧度,颜色渐变等配置完全可定制化
Java
313
star
9

Base

🍁 Base是针对于Android开发封装好一些常用的基类,主要包括通用的Adapter、Activity、Fragment、Dialog等、和一些常用的Util类,只为更简单。
Java
261
star
10

GiftSurfaceView

🌷 直播间送礼物拼图案动画控件
Java
237
star
11

KingKeyboard

🎹 KingKeyboard 是一个自定义键盘。内置了满足各种场景的键盘需求:包括但不限于混合、字母、数字、电话、身份证、车牌号等可输入场景。还支持自定义。集成简单,键盘可定制化。
Java
230
star
12

SuperTextView

🎀 SuperTextView for Android 是一个在TextView的基础上扩展了几种动画效果的控件。
Java
187
star
13

NeverCrash

🌍 全局捕获Crash。信NeverCrash,永不Crash。
Java
184
star
14

FlutteringLayout

🎈 一个直播间点赞桃心飘动效果的控件
Java
160
star
15

SplitEditText

🔢 SplitEditText 是一个灵活的分割编辑框。常常应用于验证码输入 、密码输入等场景。
Java
112
star
16

MVPFrame

🏰 MVPFrame for Android 是一个集合了 Retrofit2 + RXJava2 + OkHttp3 + Mosby3 二次封装构建的MVP快速开发框架,为敏捷开发而生。
Java
102
star
17

MapHelper

🌏 MapHelper是一个整合了高德地图、百度地图、腾讯地图、谷歌地图等相关路线规划和导航的地图帮助类库
Kotlin
100
star
18

WaveView

🏄 WaveView 一个水波纹动画控件视图,支持波纹数,波纹振幅,波纹颜色,渐变色,波纹速度,波纹方向等属性完全可配。
Java
98
star
19

UltraSwipeRefresh

🏄 一个可带来极致体验的Compose刷新组件;支持下拉刷新和上拉加载,可完美替代官方的SwipeRefresh;并且支持的功能更多,可扩展性更强。
Kotlin
93
star
20

RadarView

🍳 RadarView for Android 是一个雷达扫描动画后,然后展示得分效果的控件。
Java
85
star
21

DrawBoard

🎨 DrawBoard 是一个自定义 View实现的画板;方便对图片进行编辑和各种涂鸦相关操作
Java
70
star
22

AppPay

💸 AppPay专注于App支付的库,几句代码轻松搞定微信支付、支付宝支付、银联支付。集成更简单。
Java
70
star
23

ANetty

✉️ ANetty 是基于Netty二次封装的Android链路通讯库,用以快速开发高性能,高可靠性的网络交互。在保证易于开发的同时还保证其应用的性能,稳定性和伸缩性。轻松实现长连接通讯。
Java
67
star
24

KingPlayer

🎬 一个专注于 Android 视频播放器的基础库,无缝切换内核。(IjkPlayer、ExoPlayer、VlcPlayer、MediaPlayer)
Java
59
star
25

Location

📍 Location 是一个通过 Android 自带的 LocationManager 来实现的定位功能
Kotlin
56
star
26

ImageViewer

🌅 ImageViewer是一个图片查看器(类似微信查看图片效果),一般用来查看图片详情或查看大图时使用,支持多张查看。简单易用。
Java
56
star
27

SuperSlidingPaneLayout

SuperSlidingPaneLayout 是基于SlidingPaneLayout扩展修改,新增几种不同的侧滑效果。
Java
55
star
28

SlideBar

SlideBar for Android 一个很好用的联系人字母快速索引
Java
51
star
29

SpinCounterView

🎡 一个类似于码表变化的旋转计数器动画控件
Java
51
star
30

ViewfinderView

🎯 ViewfinderView 是一个取景视图:主要用于渲染扫描相关的动画效果。其样式主要分为两大类:经典样式(带扫描框)、流行样式(不带扫描框);可任意定制。
Java
51
star
31

BaseUrlManager

⛵ BaseUrlManager的设计初衷主要用于开发时,有多个环境需要打包APK的场景,通过BaseUrlManager提供的BaseUrl动态设置入口,只需打一次包,即可轻松随意的切换不同的开发环境或测试环境。在打生产环境包时,关闭BaseUrl动态设置入口即可。
Java
49
star
32

ASocket

🌐 ASocket 是一个TCP/UDP协议的封装库,方便快速实现TCP的长连接与UDP的单播、组播、广播等相关通信
Java
46
star
33

CounterView

一个数字变化效果的计数器视图控件
Java
43
star
34

KingsGirls

👩 项目采用RXJava + Retrofit + OKHttp + Material Design + Base + Glide构建,数据来自gank.io。是一款以瀑布流的形式展示美女福利的App
Java
41
star
35

CameraScan

📷 CameraScan一个简化扫描识别流程的通用基础库
Java
34
star
36

AppTemplate

🎭 App快速构建模板,致力于快速开发实现App提供解决方案
Kotlin
34
star
37

DragPolygonView

⭐ 一个支持可拖动多边形,可拖动多边形的角改变其形状的任意多边形控件
Java
33
star
38

RetrofitHelper

💪 RetrofitHelper是一个支持配置多个BaseUrl,支持动态改变BaseUrl,动态配置超时时长的Retrofit帮助类
Java
32
star
39

MVVMFrameComponent

🏰 基于 MVVMFrame 框架 采用 JetPack (Lifecycle,LiveData,ViewModel,Room) + Dagger + DataBinding + Retrofit + OkHttp + Glide + Kotlin coroutines + ARouter等 为核心基础库构建的组件化方案
Kotlin
30
star
40

KingWeather

☁️ 一个基于Jetpack构建的MVVM天气预报APP。你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Kotlin
29
star
41

SuperSwipeRefreshLayout

SuperSwipeRefreshLayout是在SwipeRefreshLayout的基础之上扩展修改,让其支持上拉刷新,基本用法与SwipeRefreshLayout一致。
Java
26
star
42

AWebSocket

🌐 AWebSocket一个基于okhttp封装的WebSocket,简洁易用。
Kotlin
25
star
43

KVCache

📝 KVCache 是一个便于统一管理的键值缓存库;支持无缝切换缓存实现
Kotlin
23
star
44

GuidePage

📄 GuidePage是一个App欢迎引导页库。一般应用于首次打开App时的场景,通过引导页指南,概述App特色等相关信息。(链式调用,一行代码搞定)
Kotlin
23
star
45

CodeTextField

🔢 CodeTextField 一个使用 Compose 实现的验证码输入框
Kotlin
20
star
46

libyuv

🌈 基于Google的libyuv编译封装的YUV转换工具库,主要用途是在各种YUV与RGB之间进行相互转换、裁减、旋转、缩放、镜像等。(用法超简单)
C++
16
star
47

LoadingView

🍭 LoadingView 是一个圆弧加载过渡动画,圆弧个数,大小,弧度,渐变颜色,完全可配。
Kotlin
15
star
48

AppMonitor

🎯 AppMonitor 可以轻松的监听App的前后台状态变化;Activity的活跃状态变化;设备的开关屏状态变化
Kotlin
12
star
49

EasyNote

📑 EasyNote 是一个遵循 Clean Architecture 分层,使用 Jetpack Compose 实现的笔记App
Kotlin
9
star
50

compose-component

🍇 compose-component 是一个Jetpack Compose的组件库;主要提供了一些小组件,便于快速使用。
Kotlin
9
star
51

AndroidKTX

AndroidKTX 一个简化 Android 开发的 Kotlin 工具类集合,通过 Kotlin 语法特性封装一些好用的方法和功能,可以使代码更加简洁易读,从而有效的提高开发效率。
Kotlin
8
star
52

WordPOI

👍 WordPOI是一个将Word接口文档转换成JavaBean的工具库,主要目的是减少部分无脑的开发工作。
Java
7
star
53

LogX

🚩 LogX 一个小而美的日志记录框架;好用不解释。
Kotlin
7
star
54

jenly1314.github.io

This is my personal blog repository. https://jenly1314.github.io
HTML
4
star
55

GradlePublish

Gradle 一些常用配置
4
star
56

JavaFieldGenerator

☕ JavaFieldGenerator 是一个可以根据字符串内容快速生成Java字段的插件
Java
3
star
57

Http

Http
Java
2
star
58

KingVolley

KingVolley 是Volley的二次封装
Java
1
star
59

King

实现android基本网络通信和常用工具类封装的简易框架
Java
1
star