自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(155)
  • 资源 (34)
  • 论坛 (1)
  • 问答 (7)
  • 收藏
  • 关注

原创 Android与单片机 | 开发板 | 智能硬件 | 智能设备 | 数据协议 |开发总结

一、缘起工作中经常遇到需要Android程序与各式各样的板子、智能设备进行交互,通信的方式也基本上都是Ble或者Socket tcp/udp等等…其中最重要的一点就是通信的协议、协议、协议重要的是说三遍;通信协议就是用来定义与设备交互的方式和交互过程中数据包的格式 如:(包头—数据包长度—数据—校验位—包尾)二、这里先来理理各种数据类型、所占的字节数等1、我们写的代码最终都是转化成各种机器所...

2019-06-15 00:55:31 3679 11

原创 使用AndroidX + ViewModel + LiveData + DataBinding组件,同时使用RxJava2 + Retrofit2 + Glide等主流框架搭建的MVVM

TODO-MVVM:使用JetPack中的AndroidX + ViewModel + LiveData + DataBinding组件,同时使用RxJava2 + Retrofit2 + Glide等主流框架进行搭建GitHub项目地址项目中basicLibModule为搭建的基础框架可以拿来就用,sampleModule为项目的使用案例效果图2018年谷歌I/O大会发...

2019-04-02 22:02:31 8367 1

原创 一个简单、轻量的Android版本更新库、内置了一个漂亮的更新对话框

请前往Github查看最新介绍AppUpdateGitHub地址 AppUpdate正在征集框架使用者信息,希望得到大家的支持由于Android Q版本限制后台应用启动Activity,所以下载完成会发送一个通知至通知栏(忽略showNotification的值,需要允许发送通知)由于Android Q版本限制应用访问外部存储目录(访问需要同时满足两个条件详情见...

2018-01-31 11:52:41 6377 10

原创 欢迎进入阿钟的博客导航——快速查找所有博客

世上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离;世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己;世界上最真情的相依,是你在try我在catch。无论你发神马脾气,我都默默接受,静静处理。到那时,再来期待我们的finally。Java浅谈Java设计模式—-建造者模式浅谈Java设计模式—-单例模式浅谈Java设计模式—-装饰...

2016-08-25 17:25:26 4977

原创 Flutter使用Draggable与自定义RenderObject实现图片添加标签,随意拖动位置效果

实现的效果图如下

2021-08-26 16:18:54 57

原创 Flutter视频编辑轨道 | 自定义View实现UI交互效果 | 触摸事件处理

首先先来看下需要实现的交互效果 涉及的功能点轨道最大展示的时长,这里是3分钟视频截取最短时长,这里是3秒钟当视频时长大于3分钟时,轨道底部可以滚动触摸事件处理

2021-08-11 09:57:15 71

原创 解决Flutter键盘弹起导致与输入框有间距问题(Flutter键盘弹起Scaffold布局流程)解析

一、 在项目中遇到了个如下问题:当页面底部有个输入框,点击弹出键盘时;输入框与键盘之间有一段间距通过排除,最后找到了问题根源所在;原因是使用了这个屏幕适配框架导致的。此框架通过直接修改FlutterViewConfiguration()的size与devicePixelRatio达到适配的目的二、要解决这个问题,就需要了解键盘弹起整个页面做了哪些事情来入手了假设页面如下:void main() { runApp(MyApp());}class MyApp extends B

2021-07-31 15:23:33 256

原创 Flutter自定义View之——价格选择器|双向滑动|手势处理

源码下载地址一、本篇文章通过自定义View实现的效果图二、现在对这个组件进行一一拆解,如下:顶部选中的结果我们可以单独拿出来,通过监听选择器的变化来显示值就可以底部固定的灰色进度,绘制圆角矩形刻度线,绘制直线;需要注意的是开头和结尾的刻度无需绘制刻度文字,绘制文字开始与结束的滑块,绘制图片红色选中的进度,绘制圆角矩形手势处理三、这里重点说一下绘制文字这块由于文字是与刻度居中对齐的,所以在计算坐标时 公式如下:每一个文字的起点X坐标 = 画布宽度 / 5 * 第几个刻度 - 文

2021-06-19 14:27:56 103

原创 Flutter 商品列表|商品名称 标签和文字混排效果实现

122

2021-03-11 16:41:46 248 1

原创 Flutter 自定义TabBar指示器(indicator)实现秒杀UI样式

一、话不多说,先来看下实现的交互效果,源码在文末 二、首先分解一下需求自定义Tab指示器与Tab当秒杀节点小于5个的时候,每一个Tab的宽度为平分屏幕宽度当大于等于5个的时候,每一个Tab的宽度为固定宽度1、先来看下最简单的TabBar与TabBarView需要如何实现/// 省略若干代码...@overrideWidget build(BuildContext context) { return Scaffold( appBar: AppBar( title:

2021-03-02 21:57:38 1328 2

原创 Gradle执行Shell命令并获取执行结果|进行JSON数据解析

一、在gradle中新增自定的tasktask custom { def out = new ByteArrayOutputStream() def cmd = 'ls -l' exec { ExecSpec execSpec -> executable 'bash' args '-c', cmd standardOutput = out } println(out.toS

2021-01-27 19:27:39 1329

原创 Mac上终端使用zsh,设置不区分大小写进行Tab补全

Terminal切换至zsh后每次Tab补全时都要区分大小写搞的很难受,所以搞了大半天是终于把它搞定了…参考这位大佬的方法配置:在用户目录下的~/.zshrc文件中添加如下内容:autoload -Uz compinit && compinitzstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lo

2020-12-18 22:54:12 1258 4

原创 微信小程序蓝牙(BLE)开发与蓝牙设备数据交互开发总结

需要做一个类似于美团单车小程序扫码开锁的程序,需要使用到微信小程序的蓝牙模块功能与蓝牙锁进行交互一、这里我先把我遇到的两个天坑在这里先说明一下:1、根据锁的开发文档描述:读特征值是000036F6-0000-1000-8000-00805F9B34FB,可实际开发下来发现:在Android手机是使用这个,在iOS手机确是0000FEC8-0000-1000-8000-00805F9B34FB这个问题一直没有搞懂!(上面这两个特征值至是举例)2、开启读特征值通知成功后发送数据给锁,无法收到锁回复的数据

2020-08-27 22:51:50 3506 11

原创 Android通过反射EthernetManager Api设置以太网为静态IP地址或者动态获取IP

一、对于一些工控行业的Android主板一般都会扩展个以太网接口,也就是可以插网线进行上网;然后在系统设置页面有个以太网菜单可以进行IP、网关等设置,如下:二、那怎么通过代码去设置呢?1、Android系统在Framework层是有提供操作以太网Api的也就是android.net.EthernetManager,但是Google把Api给隐藏了;所以最终你是调用不了的2、那需要怎么操作才能调用到隐藏的Api呢?相信你肯定会立马想到使用反射去调用;对,没错!这里我就是使用的这个方式;当然如果你公

2020-08-21 16:16:31 3350 23

原创 Android串口开发,基于官方的android-serialport-api增加支持设置奇偶校验|数据位|停止位

SerialPortPlus项目地址Android串口开发,基于谷歌官方的android-serialport-api增加支持设置奇偶校验、数据位和停止位使用步骤第一步:app/build.gradle进行依赖implementation 'com.azhon:serialport:1.0.0'第二步:打开串口1.打开串口try { SerialPortPlus serialPortPlus = new SerialPortPlus("/dev/ttyMT2", 9600);

2020-08-02 12:52:35 949

原创 记一次艰难的OutOfMemoryError:Could not allocate JNI Env问题排查
原力计划

当我们看到这个错误的时候第一反应是不是内存泄露导致程序无法申请到内存而导致的,然而查下来的事实告诉我并不是的…

2020-05-27 17:32:05 1394 1

原创 解决Android SoundPool播放多个音效没有播放完成回调通知

一、在我们需要播放一些短促的音乐或者音效的时候(播放mp3文件),通常会使用SoundPoolApi来播放因为可以对音频文件进行预加载至内存中从而能够迅速播放出来二、SoundPool的简单使用SoundPool soundPool = new SoundPool.Builder().build();int soundId = soundPool.load(App.getApplication(), R.raw.mp3_0, 1);soundPool.play(soundId, 1, 1, 0, 0

2020-05-17 17:00:26 2091 4

原创 Netty在Android开发中的应用实战系列(六)——— 自定义协议进行拆包

之前的文章有写过Netty的拆包处理Netty在Android开发中的应用实战系列(四)——— 粘包 | 拆包 处理一、这篇文章重点讲一下Netty中自定义协议的拆包需要怎么处理,也就是Netty提供的LengthFieldBasedFrameDecoder拆包器二、一般情况下我们都会定一个数据包的格式,如下: 包头(共10个字节) 扩展数据 标识符...

2020-04-24 22:31:09 710 2

原创 Java实现部标JTT1078实时音视频传输指令——视频流负载包(RTP)传输

一、 说一说实现的思路1.接收平台方下发的0x9101命令(实时音视频传输请求)2.解析下发的0x9101命令,拿到音视频上传数据的服务器IP和端口号3.开始获取设备摄像头的每一帧视频数据,这里需要注意的是:视频数据支持的格式有:H.264,H.265,AVS,SVAC;详细的可以查看JTT1078协议的(表12)4.将每一帧的数据封装成(表19)音视频流及透传数据传输协议负载包格式...

2020-03-07 15:08:22 5220 3

原创 使用Netty封装的部标JTT808 | JTT1078 | 渝标协议 数据上传Android端

使用Netty封装的 部标JTT808,JTT1078,渝标协议 数据上传Android端示例项目地址:GitHub地址已实现的功能JTT808注册鉴权心跳位置信息汇报设置终端参数JTT1078历史音视频查询、回放与下载指令实时音视频传输实时音视频流及透传数据传输位置信息汇报渝标上传抽烟报警上传打电话报警上传未注视前方报警上传疲劳驾驶报警...

2020-03-01 22:42:08 1570

原创 Android使用AudioRecord录制PCM音频、PCM转AAC、使用MediaRecorder直接录制AAC编码音频

Android为我们提供了两个音频处理的API:AudioRecord和MediaRecorderAudioRecord:偏底层的apiMediaRecorder:对AudioRecord进行包装的api

2020-02-29 21:06:08 2468 4

原创 Android采集摄像头的视频流数据并使用MediaCodec编码为H264格式

前言:博主在写这篇文章之前可以说是在`音视频这方面`,知识积累与经验几乎为0;所以在实现这个功能上也是费了好一番功夫和精力把它给搞出来了,所以以此篇文章纪念一下。一、首先就是需要先打开摄像头,并拿到视频的每一帧数据1、相机权限是必须要的,API>=6.0还需要动态申请 (动态申请权限代码略过,详情见文末源码)<uses-permission android:name="a...

2020-02-26 23:59:18 3514 7

原创 Viewpager迁移至ViewPager2实现Tab标签页面

ViewPager2是什么呢?ViewPager2 是 ViewPager 的下一代版本,带来了更强的功能并修复了之前的 bug;也就是解决了ViewPager的bug和不支持RTL布局等等其他问题,Google同时也放弃对ViewPager的维护了。ViewPager2相比ViewPager带来的新功能支持竖直滑动支持RTL布局可以使用DiffUtil…相关文档链接ViewP...

2019-12-16 16:26:19 3150 7

原创 使用Android APT(Annotation Processing Tool)让代码学会自己写代码

APT即注解处理器(Annotation Processing Tool)的简称

2019-12-02 15:10:51 982 3

原创 Android 动态换肤技术原理 | 实践 及总结

动态换肤一般实现的原理对页面需要换肤的View进行标记在Activity#setContentView()加载view时获取到标记的view(后面会说是要怎么获取到)创建一个Library项目制作我们的皮肤包(res下的资源名称需要与app使用的一致,换肤就是通过使用的资源名称去皮肤包里加载相同名字的资源)创建皮肤包对应的Resources对象(用于加载皮肤包内的资源)点击换肤将我们标...

2019-11-20 15:24:03 638

原创 Netty在Android开发中的应用实战系列(五)——— 创建Web服务 | 作为HTTP服务器

Netty连续Socket文章系列Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线重连Netty在Android开发中的应用实战系列(四)——— 粘包 | 拆包...

2019-09-23 22:19:28 1237

原创 Netty在Android开发中的应用实战系列(四)——— 粘包 | 拆包 处理

阅读本文建议从第一篇开始往后看本系列文章Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线重连Netty在Android开发中的应用实战系列(四)——— 粘包 ...

2019-09-21 22:58:02 2449 7

原创 Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线重连

阅读本文建议从第一篇开始往后看本系列文章Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用一、客户端添加心跳处理这里就需要提到一个netty重要的IdleStateHandler,用于处理心跳机制;为当前连接通道设置 读、写、读写 空...

2019-09-19 22:51:48 2480

原创 Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用

阅读本文建议从第一篇开始往后看本系列文章Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端一、Encoder的作用将发送的数据进行编码成需要的数据格式,然后发送出去二、Decoder的作用将收到的数据根据数据协议进行解码,然后处理三、Handler的作用将解码好的数据进行处理四、下面们通过一个简单的一个示例进行收发数据定义一个传输的...

2019-09-15 17:30:13 1813 1

原创 Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端

一、简单的介绍一下Netty官网地址:https://netty.io官网Jar包下载:https://netty.io/downloads.htmlJar包也可以去mvnrepository下载:https://mvnrepository.com/artifact/io.netty/netty-all直接上官网的介绍再好不过了谷歌翻译过来就是Netty是一个异步事件驱动的网络应用...

2019-09-14 17:44:12 6377 1

原创 Android自定义输入车牌号键盘、车牌简称 | 数字 | 字母键盘

为了便于用户快捷的输入车牌号码便需要自定义个车牌键盘,而不是使用系统的键盘输入,上效果图:横屏效果竖屏效果一、首先我们要来分析一下需要做哪些东西默认展示车牌的省份简称特殊车牌(使、领、警、港、澳)删除键切换为数字和字母按键车牌号中是没有I、O字母的(容易与1、0)分混淆,故不需要这两个按键I、O这两个按键的位置正好使用学、挂来填充二、根据效果图可以看出键盘就...

2019-08-31 15:45:59 3195

原创 记一次BLE(低功耗蓝牙)扫描周围设备慢的一个坑

BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);bluetoothAdapter = bluetoothManager.getAdapter(); bluetoothAdapter.startLeScan(leScanCa...

2019-08-22 23:32:34 3204

原创 Android通过蓝牙(BLE低功耗蓝牙)实现设备间通讯 | 客户端 | 服务端

这篇文章主要说的是通过BLE(Bluetooth Low Energy)蓝牙来实现一个聊天的效果;通常我们使用这个BLE都是手机去连接一些智能设备或者智能硬件然后进行通讯,也就是手机充当客户端,智能设备充当服务端;很少有用到通过BLE让两个手机进行通讯,手机既可以充当客户端也可以充当服务端一、话不多说,先看效果图 BLE最低支持Android4.3(API=18),如果还要充当服务端那么最...

2019-07-28 12:07:57 3145 2

原创 Android应用上架国内各大应用市场对应用Logo、应用截图要求整理

这里我整理的一些比较多人使用的一些应用市场,当然还有一些遗漏的欢迎大佬们补充对于国内的应用市场环境,突然好羡慕AppStore、Google Play 说多了都是泪…上架大家一定要在上线前一两个月去申请软著、软著、软著腾讯应用宝(需要软著)上架流程应用小图标:尺寸16*16px,大小20k以内,PNG格式的图片应用图标:尺寸512*512px,大小200k以内,PNG格式的图片,建议...

2019-07-03 14:58:10 5910 7

原创 使用python生成微信好友个性签名词云图

生成词云主要使用了itchat、jieba、wordcloud这三个依赖库itchatitchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。jieba“结巴”中文分词:做最好的 Python 中文分词组件wordcloud词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可...

2019-06-21 14:30:00 1040 1

原创 Android集成高德地图导航SDK、实现App内进行导航、打开高德App导航

这篇文章就主要来讲一下集成高德的导航SDK,实现app内导航;这样就不用调用高德的App了一、申请key之类的这里就不说了自己去申请就ok高德开放平台高德开放平台—导航sdk高德开放平台—导航sdk下载二、我这下载的SDK如下,只有3D地图和导航SDK这两个三、配置工程导入导航SDK和so库文件配置Manifest.xml添加权限<!--用于访问网络,网络定位需要...

2019-06-04 18:23:23 10417 10

原创 浅谈Java设计模式之——抽象工厂模式

上一篇文章我们介绍了一下简单工厂模式,这一节就接着来说抽象工厂模式浅谈Java设计模式之——简单工厂模式一、什么是简单抽象工厂模式抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。看了上面一大堆你可能还是没看懂具体是什么意思,下面通过一个具体的案例来说明一下:二、假...

2019-05-27 23:48:36 544

原创 浅谈Java设计模式之——简单工厂模式

简单的介绍一下简单工厂模式的概念:简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式;通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类从介绍我们就可以提炼出一些特点:每一个实例具有共同的父类一个特定的类来负责创建其它类的实例现在我们通过工厂模式来实现一个例子:我们现在需要一个水果工厂来获得

2019-05-26 17:03:04 769 2

原创 关于ObjectAnimator的rotationX、rotationY在部分华为设备上消失的问题

吐槽一下HUAWEI,你为什么要这么的秀高高兴兴的写了个绕Y轴旋转的动画,运行一下完美展示ObjectAnimator animator = ObjectAnimator.ofFloat(imageView, "rotationY", 0, 360f);animator.setDuration(3_000);animator.start();你以为这样就完了吗?当然没有,测试MM过来...

2019-04-25 15:39:33 1893 4

原创 Android DataBinding 你好!

一:使用DataBinding的第一步,只需要在app/build.gradle开启它android { compileSdkVersion 28 defaultConfig { applicationId "azhon.com.viewbinding" //.... } //开启dataBinding dataBindin...

2019-02-26 20:52:09 1506

LicensePlateKeyboard.zip

自定义view实现输入车牌号码的键盘,介绍:https://azhon.blog.csdn.net/article/details/100173074

2019-08-31

NettyAndroid,Netty在Android中的使用

Netty在Android开发中的应用实战系列(一)——— 搭建服务端与客户端:https://azhon.blog.csdn.net/article/details/100569489 Netty在Android开发中的应用实战系列(二)——— Encoder | Decoder | Handler 的使用:https://azhon.blog.csdn.net/article/details/100831777 Netty在Android开发中的应用实战系列(三)——— 心跳处理 | 断线重连:https://azhon.blog.csdn.net/article/details/100941312 Netty在Android开发中的应用实战系列(四)——— 粘包 | 拆包 处理:https://azhon.blog.csdn.net/article/details/101039462

2019-09-21

Android使用AudioRecord、MediaRecorder录制音频

Android使用AudioRecord录制PCM音频、PCM转AAC、使用MediaRecorder直接录制AAC编码音频

2020-02-29

Flutter自定义TabBar的Indicator.zip

Flutter自定义TabBar的Indicator 实现秒杀Tab效果

2021-03-02

AndroidBLE聊天案例BLE服务端

通过Android BLE 实现服务端、客户端通讯。一个简单的聊天案例

2019-07-28

联系人列表字母索引

仿手机联系人列表,可以根据字母索引快速点位联系人

2016-11-18

CheckBoxRecyclerView

RecyclerView列表上放置CheckBox实现全选功能

2016-10-26

使用TCP在局域网进行数据传输

基于SocketTcp编程使用数据传输

2016-08-31

Android文件断点下载案例

实现文件的断点下载,继续,暂停,重新下载

2017-02-19

git2.10.0版本

用于团队开发的一款神器

2016-09-12

VideoH264.zip

Android采集摄像头的视频流数据并使用MediaCodec编码为H264格式 https://azhon.blog.csdn.net/article/details/104527016

2020-02-26

EthernetUtil.java

Android通过反射EthernetManager Api设置以太网为静态IP地址或者动态获取IP https://azhon.blog.csdn.net/article/details/108148055

2020-08-21

水波球效果

通过白塞尔曲线实现的一个水波球效果,类似剩余流量显示的效果。摘要为什么一定要大于100个字节,啊啊啊.......!

2017-09-04

Android不需要文件存储权限将文件保存至手机

Android不需要文件存储权限将文件保存至手机,Android不需要文件存储权限将文件保存至手机

2018-04-25

第一个JNI程序

一个基本的Android jni程序

2016-11-09

几种常用的Dialog

一个常用的对话框大全

2017-01-18

Mvp+RxJava2+Retrofit2 搭建一个属于自己的开发框架

Mvp+RxJava2+Retrofit2 搭建一个属于自己的开发框架 https://blog.csdn.net/a_zhon/article/details/77914012

2019-03-27

JTT 808-2011道路运输车辆卫星定位系统数据协议

JTT 808-2011 道路运输车辆卫星定位系统终端通讯协议及数据格式

2018-12-19

抽屉菜单滑动模糊效果

Log.e("TAG","滑动抽屉菜单,高斯模糊背景效果,毛玻璃效果。")

2018-06-13

CollapsingToolbarLayout.zip

https://azhon.blog.csdn.net/article/details/52611166 使用CollapsingToolbarLayout实现带图片折叠的ToolBar

2021-07-13

slider_selector_widget.dart

Flutter自定义View之——价格选择器|双向滑动|手势处理

2021-06-19

FindView.zip

使用APT(Annotation Processing Tool)自动生成Java,仿写ButterKnife自动找ID功能

2019-12-02

QQ登录测试

实现了QQ登录和分享功能

2016-08-26

SSM web轻量极框架

使用 Spring SpringMvc MyBatis 搭建一个SSM web轻量极框架

2017-11-29

仿QQ空间广告图

仿QQ空间广告图

2017-07-22

Scheme-Module

使用系统提供的scheme协议进行页面跳转和网页打开app。不想设置积分,奈何不能选择0积分emmmm.....

2017-10-26

win git2.9.2

用于团队开发的一款神器

2016-07-21

android messenger进程通信

通过 Messenger(信使) 实现进程将的通信,服务端具有信息反馈。

2018-07-11

Spring MVC文件上传

使用Spring MVC进行文件上传。文章地址:http://blog.csdn.net/a_zhon/article/details/78566149

2017-11-17

自定义ViewGroup仿ViewPager

scrollTo scrollBy Scroller的使用,自定义ViewGroup 使用scroll 仿ViewPager

2017-12-27

TabLayout测试

使用tablayout和ViewPager和Fragment实现导航栏页面切换

2016-09-13

zxing二维码扫描

一个精简的二维码扫描库,可以生成带Logo的二维码

2016-09-15

Handler Looper MessageQueue 源码解析

Looper MessageQueue 源码解析,通过源码 手写一套自己的Handler。

2018-01-13

jxmpp-utils-cache

jxmpp-utils-cache

2017-03-10

Code-Porter的留言板

发表于 2020-01-02 最后回复 2020-01-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除