自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(161)
  • 资源 (35)
  • 问答 (7)
  • 收藏
  • 关注

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

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

2019-06-15 00:55:31 4419 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 8702 1

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

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

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

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

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

2016-08-25 17:25:26 5090

原创 IDEA 开发插件,插件依赖|文件路径转VirtualFile 遇坑随笔

FlutterModuleBridge插件Flutte、Dart模块化开发,事件通信插件。FlutterPlugin插件Flutter路由、Assets资源、Iconfont资源生成插件。

2022-11-24 10:58:34 303

原创 Flutter 实现九宫格抽奖动画效果

通过Flutter实现的九宫格抽奖效果

2022-10-20 15:25:39 518

原创 解决Flutter输入框限制最大输入长度时,从中间输入会自动截取掉后面的内容

当限制输入框最大输入长度时,将`光标移动到中间`输入,当`输入的内容长度`加上`已经输入内容的长度`大于`限制的输入长度`时,Flutter会将光标后面的内容进行截取掉;而当我在原生Android上验证时却是自动截取输入的内容原有的内容不动。...

2022-08-16 14:19:39 671

原创 Flutter输入框实现银行卡输入 每隔四位插入空格进行分割

先来看下效果图吧实现思路1、利用输入框的TextInputFormatter的withFunction方法来处理用户输入的内容2、同时需要监听文本改变将光标移动至末尾///输入框控制器TextEditingController _controller = TextEditingController();///输入框CupertinoTextField( controller: _controller, placeholder: '请输入银行卡号', ///省略部分代码 in

2022-04-28 20:57:33 1542

原创 将Flutter添加到现有应用——过程中遇到的问题

参照官方文档试着将Flutter集成到现有的Android应用,出现了错误特此来记录一下本文所展示项目的运行环境:Flutter SDK Version:2.81.AndroidStudio Version:Bumblebee | 2021.1.1 Patch 2Android SDK Version:31Gradle Version:7.21、 官方教程地址:这里我是按照手动集成 方案B-依赖模块的源码的方式将Flutter添加至项目2、在当前Android项目下创建一个flutter_

2022-03-24 17:38:55 2888

原创 Flutter悬浮窗组件之实现快捷换肤、切换语言等开发调试功能模块

一、最近开发一个App具有黑白两个主题和切换语言的功能,所以在开发的时候一个页面总是要不断的去切换主题和语言来查看功能是否正常。为了提高这个开发效率突然想到可以在应用上增加一个悬浮窗组件然后实现主题切换和语言切换的功能,这样在任意一个页面就可以快速的查看效果。不用来回切换到设置页面内去进行切换了。二、 实现的效果悬浮窗组件也可以随意进行拖动,打开一个新的页面悬浮窗也始终是在最顶部的这里稍微参考了一下滴滴的Dokit-Flutter悬浮窗实现三、功能实现创建一个DeveloperWid

2021-12-11 13:15:46 1647

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

实现的效果图如下

2021-08-26 16:18:54 331

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

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

2021-08-11 09:57:15 996

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

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

2021-07-31 15:23:33 1414

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

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

2021-06-19 14:27:56 370

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

122

2021-03-11 16:41:46 648 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 3492 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 3277

原创 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 2149 4

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

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

2020-08-27 22:51:50 5019 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 5110 25

原创 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 1235 3

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

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

2020-05-27 17:32:05 2442 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 3071 4

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

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

2020-04-24 22:31:09 804 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 7088 6

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

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

2020-03-01 22:42:08 2050

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

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

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

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

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

2020-02-26 23:59:18 6507 10

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

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

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

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

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

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

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

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

2019-11-20 15:24:03 727

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

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

2019-09-23 22:19:28 1597 2

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

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

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

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

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

2019-09-19 22:51:48 2978

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

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

2019-09-15 17:30:13 2279 2

原创 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 7998 2

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

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

2019-08-31 15:45:59 3618

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

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

2019-08-22 23:32:34 3951 3

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

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

2019-07-28 12:07:57 3947 3

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

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

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

EthernetUtil.java

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

2020-08-21

Android使用AudioRecord、MediaRecorder录制音频

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

2020-02-29

Spring MVC文件上传

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

2017-11-17

Scheme-Module

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

2017-10-26

水波球效果

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

2017-09-04

仿QQ空间广告图

仿QQ空间广告图

2017-07-22

jxmpp-utils-cache

jxmpp-utils-cache

2017-03-10

Android文件断点下载案例

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

2017-02-19

几种常用的Dialog

一个常用的对话框大全

2017-01-18

联系人列表字母索引

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

2016-11-18

第一个JNI程序

一个基本的Android jni程序

2016-11-09

CheckBoxRecyclerView

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

2016-10-26

zxing二维码扫描

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

2016-09-15

TabLayout测试

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

2016-09-13

git2.10.0版本

用于团队开发的一款神器

2016-09-12

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

基于SocketTcp编程使用数据传输

2016-08-31

QQ登录测试

实现了QQ登录和分享功能

2016-08-26

win git2.9.2

用于团队开发的一款神器

2016-07-21

Flutter悬浮窗组件之实现快捷换肤、切换语言

Flutter悬浮窗组件之实现快捷换肤、切换语言等开发调试功能模块

2021-12-11

CollapsingToolbarLayout.zip

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

2021-07-13

slider_selector_widget.dart

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

2021-06-19

Flutter自定义TabBar的Indicator.zip

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

2021-03-02

VideoH264.zip

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

2020-02-26

FindView.zip

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

2019-12-02

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

LicensePlateKeyboard.zip

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

2019-08-31

AndroidBLE聊天案例BLE服务端

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

2019-07-28

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

android messenger进程通信

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

2018-07-11

抽屉菜单滑动模糊效果

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

2018-06-13

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

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

2018-04-25

Handler Looper MessageQueue 源码解析

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

2018-01-13

自定义ViewGroup仿ViewPager

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

2017-12-27

SSM web轻量极框架

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

2017-11-29

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

TA关注的人

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