- 博客(66)
- 资源 (40)
- 问答 (1)
- 收藏
- 关注

原创 Android开源项目 RecyclerViewHelper 上拉加载更多/头尾布局/拖拽排序/侧滑删除/侧滑选择/万能分割线
转载请注明出处:https://blog.csdn.net/kong_gu_you_lan本文出自 容华谢后的博客1.写在前面2019年的第一篇文章,分享一个自己写的开源项目,主要是对RecyclerView控件的一些常用功能封装, 包括(上拉加载更多、头尾布局、拖拽排序、侧滑删除、侧滑选择、万能分割线)。RecyclerViewHelper主要使用了装饰者模式对项目原有的Adapte...
2019-02-21 09:32:50
313
2

原创 使用Java实现串口通信(二)
1.写在前面距离上一篇文章《使用Java实现串口通信》已经过去快两年的时间了,在此期间收到了很多读者的反馈,很高兴可以帮助到这么多人,根据收到的反馈,我对代码逻辑进行了优化整理,并增加了一些新功能,在此记录下,分享给大家。先看下效果:2.环境搭建本文的串口通信开发基于RXTX,所以需要引用一些RXTX的依赖包:RXTX 依赖包下载地址,内含32位与64位版本拷贝 RX...
2018-06-06 09:03:29
35229
134

原创 Android NDK开发(四) 将FFmpeg移植到Android平台
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。1.写在前面在上一篇文章《Android NDK开发(三) 在Linux环境下编译FFmpeg》中,我们学习了如何将FFmpeg源码编译成so文件,但是这些so文件还不能直接引用到Android工程中,还需要再次编译加工才能使用,今天就让我们来学...
2018-03-27 09:10:12
1610
11

原创 Android 使用代码实现一个选词(拖拽)填空题
GitHub传送门1.写在前面在上一篇文章《Android 使用代码实现一个填空题》中,我们学习了如何实现一个填空题,今天继续接着上一篇文章的节奏,学习一下如何实现一个选词填空题,由于本文中用到了一些上篇文章的知识点,所以还没有看过上篇文章的同学可以>戳这里<了解一下。首先看下效果图:2.学习一些基础知识选词填空题有一个很重要的功能就是拖拽,我们先来学习一下如何对View进行拖拽操作,写个简单的De
2017-10-10 17:28:30
1239

原创 Android 使用代码实现一个填空题
GitHub传送门1.写在前面最近项目比较忙,有一个多月没有更新博客了,利用闲暇之余总结一下项目中遇到的问题,分享给大家!刚看到要做填空题这个需求的时候,第一个反应是到百度,啊…不对,谷歌上搜一下有没有类似的Demo,无奈搜出来的全是Android面试题,唉,算了,还是老老实实自己实现吧,先看下效果:2.学习一些基础知识首先来学习一下如何对TextView的局部设置颜色和点击事件,这里要用到一个很重
2017-09-29 15:12:16
4158
16

原创 Android自定义控件 温度旋转按钮
1.介绍首先看下效果图2.思路初始化一些参数绘制刻度盘绘制刻度盘下的圆弧绘制标题与温度标识绘制旋转按钮绘制温度处理滑动事件提供一些接口方法3.实现初始化一些参数public class TempControlView extends View { // 控件宽 private int width; // 控件高 private int height;
2016-12-12 09:38:25
4372
13

原创 Android自定义控件 芝麻信用分雷达图
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。1.介绍首先看下支付宝上芝麻信用分的效果图:2.思路确定雷达图中心点坐标绘制多边形及连接线根据维度值绘制覆盖区域绘制分数绘制每个维度的标题文字和图标3.实现获取布局的中心坐标在onSizeChanged(int w, int h, int oldw, int oldh)方法里面,根据View的长宽,计
2016-10-23 20:11:08
7273
24

原创 自己动手写一个Android Studio插件
1.介绍官方文档在使用Android Studio开发的时候,大部分人都会使用一些插件来提高开发效率,比如:ButterKnife 自动生成注解代码PermissionsDispatcher 更方便的进行Android 6.0权限处理像这样的插件还有很多很多,但我们不能一直停留在用的程度,这样太不符合程序猿的风格了,今天就让我们自己动手来写一个插件,当以后自己有好的想法的时候,也能写一个出色的
2016-10-21 11:38:13
3817
4

原创 Android 使用JitPack快速发布你的GitHub开源库
1.介绍Android Studio使用了Gradle来管理依赖,这让引入第三方库变得更加方便高效,目前在Studio中使用Gradle依赖,有几种方法:jCenterMaven Central使用其他自定义的仓库使用Center和Maven Central的方式太过繁琐,实在不想用,在GitHub上发现,越来越多的开源库选择了JitPack来发布,JitPack实际上是一个自定义的Mave
2016-10-17 15:46:26
1471
原创 一起学习正则表达式(一)那些让人头晕的元字符
转载请注明出处:https://blog.csdn.net/kong_gu_you_lan本文出自 容华谢后的博客0.写在前面在开发中,正则表达式常用于邮箱、手机号的校验,文本的批量查找、替换等操作。大部分同学,在拿到需求的时候,第一件事一定是打开浏览器,搜索:邮箱 正则表达式 怎么写,然后Ctrl C + V,测试几个条件没问题,就提交了,出了问题也不知道怎么修改,只能再求救热心网友。本篇文章,主要带大家了解一下,正则表达式的基本用法,有个初步的了解,看到正则后不再一脸懵。比如IPv4地址.
2021-01-23 20:59:49
38
原创 Android画板 半透明画笔 笔迹叠加效果
转载请注明出处:https://blog.csdn.net/kong_gu_you_lan本文出自 容华谢后的博客0.写在前面先看下效果图,功能虽然简单,但是实现的时候谷歌、百度了很久也没有找到解决方案,提这个问题的人不少,但是回答的人一个也没有,十分郁闷,在此记录,分享给各位。1.半透明画笔先按照常规的方法实现一个简单的画板:public class SketchpadView...
2020-04-17 09:08:58
796
原创 一道Java面试题引发的思考
转载请注明出处本文出自 容华谢后的博客目录0.写在前面1.题目2.栈内存、堆内存栈内存(stack)堆内存(heap)3.基本类型数据、对象的内存分配基本类型数据对象4.值传递、引用传递值传递:引用传递:5.String类型String str = “a”;String str = new String("a");6.解题分析7.写在最后0.写在前面这两天做了一道常见的Java面试题,...
2019-10-25 09:31:06
184
2
原创 Android自定义控件 带文字提示的SeekBar
转载请注明出处本文出自 容华谢后的博客1.写在前面SeekBar控件在开发中还是比较常见的,比如音视频进度、音量调节等,但是原生控件有时还不能满足我们的需求,今天就来学习一下如何自定义SeekBar控件,本文主要实现了一个带文字指示器效果的SeekBar控件,看下最终效果:2.实现IndicatorSeekBarpublic class IndicatorSeekBar exte...
2018-12-20 10:06:08
2170
2
原创 您有一份AndroidX升级指南未领取
转载请注明出处本文出自 容华谢后的博客1.介绍相信大家对Android Support Libray都不陌生,随着Android版本的快速迭代,Google推出了Support Libray用以兼容低版本的Android设备。但是随着版本越来越多,支持库的维护和使用也变得越来越复杂,于是AndroidX应运而生,接下来我们一起来学习下如何迁移到AndroidX吧!AndroidX基于A...
2018-11-19 08:26:56
1696
3
原创 滴滴插件化方案 VirtualApk 完全解析(一) 初识基本用法
转载请注明出处 本文出自 容华谢后的博客1.介绍VirtualApk GitHub地址VirtualAPK是滴滴在2017年6月开源的一款插件化框架,支持Android四大组件,以及几乎所有的Android特性,通过Gradle来构建插件,集成与构建十分便捷,目前已经应用在 滴滴出行 App上,兼容市面上几乎所有的Android设备。VirtualAPK支持的...
2018-08-01 09:04:37
2307
3
原创 Android 蓝牙BLE开发详解
1.介绍蓝牙是一种短距离的无线通信技术,可以实现固定设备、移动设备之间的数据交换。一般将蓝牙分为两大类,蓝牙3.0规范之前的版本称为传统蓝牙,蓝牙4.0规范之后的版本称为低功耗蓝牙,也就是常说的BLE(Bluetooth Low Energy)。本文主要讲解的是Android设备与BLE设备之间的通信,Android 从4.3版本(API Level 18)开始支持BLE通信。2....
2018-07-12 08:59:23
6294
13
原创 Android Design Support Library v28 新增组件详解
1.简介Google在近期发布了最新的Design Support Library 28.0.0-alpha3版本,其中新增了一些非常实用的组件,本篇文章将会对其进行详细的介绍,一起来看下!如果你对Material Design还不太了解,可以点击这篇文章《Design Support Library介绍》了解一下。引入依赖库在app根目录的buil.gradle文件中加入依赖:...
2018-06-21 08:59:44
5782
5
原创 Android NDK开发(五) 开发中遇到的问题汇总
1.abiFilters是做什么用的?我们在项目的gradle中经常会看到这样的配置:defaultConfig { ... ndk { abiFilters "armeabi-v7a", "x86" }}那为什么要这样配置呢,一起来看下:如果我们在项目中引入了某个SDK,这个SDK中支持 armeabi、armeabi-v7a、ar...
2018-05-18 09:18:01
700
原创 Android NDK开发(三) 在Linux环境下编译FFmpeg
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。1.环境搭建 操作系统:Ubuntu 16.04 64bit NDK版本:android-ndk-r14b-linux-x86_64 FFmpeg版本:3.4.2NDK 下载地址FFmpeg 下载地址将NDK...
2018-03-07 08:58:56
651
1
原创 Android NDK开发(二) 使用ndk-build构建工具进行NDK开发
本文主要讲解了在Windows环境下如何使用ndk-build构建工具来进行NDK开发,以及ndk-build构建工具在Android Stuido中的快捷工具配置。在上一篇文章《Android NDK开发(一) 使用CMake构建工具进行NDK开发》中,我们学习了如何使用CMake构建工具来进行NDK开发,但是一些老项目还是使用的ndk-build构建工具进行开发的,今天我们就来学习一下如
2018-01-24 09:25:28
2157
7
原创 Android NDK开发(一) 使用CMake构建工具进行NDK开发
2018年的第一篇文章,主要讲解了JNI、NDK的一些概念以及在AS 3.0环境下如何使用CMake构建工具来进行NDK开发。1.了解一些概念JNI(Java Native Interface):Java原生接口,是Java和其他原生代码语言(例如 C 和 C++)通信的桥梁。NDK(Native Development Kit):原生开发工具集,是一套允许您使用原生代码
2018-01-18 09:07:29
4453
原创 Android 图解Canvas drawText文字居中的那些事
GitHub传送门1.写在前面在实现自定义控件的过程中,常常会有绘制居中文字的需求,于是在网上搜了一些相关的博客,总是看的一脸懵逼,就想着自己分析一下,在此记录下来,希望对大家能够有所帮助。2.绘制一段文本首先把坐标原点移动到控件中心(默认坐标原点在屏幕左上角),这样看起来比较直观一些,然后绘制x、y轴,此时原点向上y为负,向下y为正,向左x为负,向右x为正,以(0,0)坐标开始绘制一段文本:@Ov
2017-12-29 08:55:44
3232
5
原创 Android自定义控件 倒计时
GitHub传送门1.写在前面本篇文章实现了一个简单的倒计时控件,主要运用了画布的操作,滑动角度计算等知识点,非常适合自定义控件的初学者进行学习,看下效果图:2.实现初始化一些数据public class CountdownView extends View { // 控件宽 private int width; // 控件高 private int height;
2017-12-14 09:01:16
1216
2
原创 Android 自定义Switch开关按钮的样式
GitHub传送门1.写在前面本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,希望对大家能够有所帮助,看下效果图:2.自定义样式2.1 原生样式首先看下原生的效果(Android 7.1):布局文件如下:<Switch android:layout_width="wrap_content" an
2017-12-07 08:52:07
4661
2
原创 手把手教你在Android Studio 3.0上分析内存泄漏
戳我下载 Android Studio 3.0 这个不用梯子我会告诉你吗1.写在前面Google在上周发布了Android Studio 3.0正式版本,周四早晨在上班的地铁上就看到群里在沸沸扬扬的讨论3.0版本的各种坑,啊,不对,各种特性,到公司之后就迫不及待的更新了3.0版本,嗯,还算顺利,只遇到了一个坑,一切都在happy的进行着。什么,你以为我想要写遇到的坑是什么,呵呵哒,我才不会告诉
2017-10-31 15:44:02
1685
原创 Android RecyclerView下拉刷新 & 上拉加载更多
GitHub传送门1.写在前面本文主要实现的是上拉加载更多功能,下拉刷新使用的是Google官方的SwipeRefreshLayout控件,因为在实现这个功能的时候走了不少弯路,所以在此记录下来分享给大家,先看下效果图:2.实现上拉加载实际上就是给RecyclerView增加一个FooterView,然后通过判断是否滑动到了最后一条Item,来控制FooterView的显示和隐藏,接下来我们来看下如
2017-10-20 13:16:27
2801
9
原创 Android自动化测试工具 UiAutomator使用详解
本文测试用例下载地址1.介绍Android团队在4.1版本(API 16)中推出了一款全新的UI自动化测试工具UiAutomator,用来帮助开发人员更有效率的完成App的Debug工作,同时对于测试人员也是一大福音,为什么这么说呢? 测试:“我发现了一个bug,你写的App打开A页面,再打开B页面有时会出现闪屏问题。” 开发:“嗯?还有这样的问题,复现给我看看。(内心独白:我写的Ap
2017-08-16 08:49:49
3322
6
原创 Android DataBinding & MVVM
先说说两者的关系,DataBinding是一个实现数据和UI绑定的框架,而MVVM是一种架构模式,实现MVVM模式需要借助DataBinding来完成。本文将以《Android 谈谈我所理解的MVP》中的例子为基础,使用MVVM模式重新实现一下。嗯,本篇博客也是有副标题的:Retrofit + RxJava + RxLifecycle + MVVM本文涉及到的一些基础知识:《Android Data
2017-08-09 08:33:39
1342
3
原创 Android DataBinding使用详解(二)
《Android DataBinding使用详解(一)》官方文档Demo下载地址1.在RecyclerView中使用DataBindingAdapter的定义方式和普通方式相同,都是继承了RecyclerView.Adapter,然后实现其中的方法,但是具体的实现方式还是有所差别的:public class RecyclerViewAdapter extends RecyclerView.Adapt
2017-07-26 08:54:44
1131
2
原创 Android DataBinding使用详解(一)
DataBinding是一个实现数据和UI绑定的框架,同时也是实现MVVM模式所依赖的工具。官方文档Demo下载地址1.构建环境在app根目录的build.gradle文件中加入DataBinding配置:android { .... dataBinding { enabled = true }}环境要求:系统版本:Android 2.1(API leve
2017-07-24 08:51:00
2452
4
原创 Android 使用RxLifecycle解决RxJava内存泄漏
RxLifecycle GitHub地址RxJava GitHub地址1.为什么会发生内存泄漏使用RxJava发布一个订阅后,当页面被finish,此时订阅逻辑还未完成,如果没有及时取消订阅,就会导致Activity/Fragment无法被回收,从而引发内存泄漏。 写段代码测试一下,定义一个Activity,布局中显示一张图片,这样可以直观的看到此Activity的内存占用情况,然后在Activi
2017-07-06 08:41:22
25608
8
原创 Android 谈谈我所理解的MVP
嗯,这篇博客应该有个副标题:Retrofit + RxJava + RxLifecycle + MVP在上一篇文章中,我们对Retrofit进行了封装,But,这种封装是不支持MVP模式的,今天就以Retrofit和RxJava为基础,谈谈我所理解的MVP。《Android Retrofit + RxJava使用详解》《Android 探讨一下Retrofit封装的最佳姿势》1.MVP VS MVC
2017-06-29 08:44:34
2137
1
原创 Android 探讨一下Retrofit封装的最佳姿势
在上一篇文章《Android Retrofit + RxJava使用详解》中,我们学习了Retrofit的一些基本用法,但在实际的项目使用中,还是会出现一些问题,今天就让我们一起来探讨一下如何对Retrofit进行封装吧!如果你对Retrofit还不太了解,可以>戳这里<学习一下。如果你用的是MVP,这篇文章可能不太适合你。1.背景介绍首先来回顾一下Retrofit的基本使用流程,直接上代码:/**
2017-06-27 08:39:48
1319
2
原创 Android Retrofit + RxJava使用详解
1.Retrofit基本使用首先来了解下Retrofit是什么,在官网中对于Retrofit的描述是这样的: A type-safe HTTP client for Android and Java. 适用于Android和Java的类型安全的HTTP客户端。可以理解成一个封装好的网络请求库。Retrofit GitHub地址接下来学习一下Retrofit的基本使用方法:在app根
2017-06-21 08:32:51
2928
2
原创 Android 关于Handler内存泄漏的那些事
在上一篇文章《Android Handler机制完全解析》中,我们从源码的角度分析了Hanlder机制,接下来继续学习Handler,本篇文章主要讲解的是Handler可能会导致的内存泄漏以及解决方案。1.为什么会发生内存泄漏在平时使用Handler的时候,我们通常会这样定义:// 定义一个Handler对象,并实现handleMessage方法Handler handler = new Hand
2017-06-17 01:17:18
518
原创 Android Handler机制完全解析
Android Handler机制完全解析1.为什么要引入Handler机制?举个栗子:通过网络获取数据然后显示在TextView中,由于网络通信属于耗时操作,所以必须在子线程中完成,但是子线程中是不能更新UI的(特殊情况除外),为了解决以上问题,Android引入了Handler机制,由Handler来负责与子线程进行通讯,从而使子线程与主线程之间建立起协作的桥梁,使Android的UI更新问题得
2017-05-06 23:36:04
663
原创 Android属性动画(三) TimeInterpolator(插值器)
OK,继续学习属性动画,本篇文章是属性动画系列的第三篇文章了,今天来学习一下属性动画中的TimeInterpolator,如果你对属性动画还不太熟悉,可以点击下面的链接学习一下前两篇文章的知识:《Android属性动画(一) 初识基本用法》《Android属性动画(二) ValueAnimator的实际应用 & 自定义TypeEvaluator》1.介绍先说说Interpolator,在Androi
2017-03-13 10:00:02
1660
原创 Android属性动画(二) ValueAnimator的实际应用 & 自定义TypeEvaluator
在上一篇文章《Android属性动画(一) 初识基本用法》中,我们学习了属性动画的基本用法,但是在一些场景中,这些用法还远不能满足我们的需求,今天就让我们来学习一下属性动画的高级用法吧!1.ValueAnimator的实际应用在上篇文章中我们学习到,ValueAnimator.ofInt()方法可以帮我们计算初始值到结束值之间的动画过渡值,但是这些值如何应用到实际的View中呢,举个简单的例子来实践
2017-03-03 09:51:08
1172
5
原创 Android属性动画(一) 初识基本用法
1.介绍Android系统为我们提供了三种动画效果的实现方式:补间动画(Tween Animation):只能对View进行动画操作,支持移动、旋转、透明、缩放四种效果,有一定的局限性。逐帧动画(Frame Animation):把一个动画分成多张图片,然后把这些图片连贯起来播放,原理和动画片类似。属性动画(Property Animation):通过改变对象的属性值来实现的动画效果,不局限使
2017-03-01 09:48:52
791
原创 Java多线程 线程同步与死锁
1.线程同步多线程引发的安全问题一个非常经典的案例,银行取钱的问题。假如你有一张银行卡,里面有5000块钱,然后你去银行取款2000块钱。正在你取钱的时候,取款机正要从你的5000余额中减去2000的时候,你的老婆正巧也在用银行卡对应的存折取钱,由于取款机还没有把你的2000块钱扣除,银行查到存折里的余额还剩5000块钱,准备减去2000。这时,有趣的事情发生了,你和你的老婆从同一个账户共取走了40
2017-02-25 15:47:18
6007
4
java串口通信操作的jar包rxtx-2.2(内含32位与64位版本)
2016-08-24
使用Java实现串口通信demo下载
2017-10-11
使用java实现Xmodem协议
2016-12-16
Android Retrofit + RxJava使用详解
2017-06-20
使用Java实现串口通信demo 第二版
2018-06-06
Git-2.10.2-64-bit TortoiseGit-2.3.0.0-64bit
2016-11-26
Android自定义控件 旋转按钮
2017-01-03
Android Dialog与软键盘的正确打开方式
2017-02-05
Android 流式布局FlowLayout 关键字标签
2017-01-03
MPAndroidChart折线图Demo
2016-12-14
开源日志库Logger使用Demo
2016-12-27
Android 使用代码实现一个填空题
2018-06-05
Android 使用代码实现一个选词(拖拽)填空题
2018-06-05
Excel表格操作依赖包poi-3.9.jar和使用Demo
2016-10-13
Android自定义控件 倒计时
2018-06-05
虚拟串口Virtual Serial Port Driver 7.2.308原版 + 破解补丁
2016-08-16
jar打包工具fatjar_0.0.31
2016-08-10
Android自定义控件 芝麻信用分雷达图
2017-01-03
Git-2.10.2-32-bit TortoiseGit-2.3.0.0-32bit
2016-11-26
java串口通信操作的jar包rxtx-2.2-win-x64
2016-08-16
java串口通信操作的jar包rxtx-2.2
2016-08-16
log4j-1.2.17
2016-08-15
java串口通信操作的jar包rxtx-2.2(32位/64位)
2016-08-24
Android自定义控件 温度旋转按钮
2017-01-03
Android自定义控件 温度旋转按钮
2017-01-03
空空如也
Android 在Gradle中引用远程开源库,需要在混淆文件中配置吗?
2017-01-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝