自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 安卓项目实战之启动页进入时(冷启动)有短暂黑屏或白屏现象的终极解决方案

问题描述 在安卓项目开发中,我们在启动app的时候,屏幕会出现一段时间的白屏或者黑屏,不同设备时间长短不同。很影响用户体验,所以我们很有必要对其进行优化。 黑白屏问题出现的原因 当我们启动一个APP时,如果该app所属的Application还没有在后台运行的话,系统会首先创建一个新的...

2020-05-06 10:52:42 269 0

原创 安卓项目实战之:数据库框架 LitePal 3.0 的使用详解

LitePal简介 LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表和增删改查的操作,并且LitePal很“轻”,jar包大小不到100k,而且近乎零配置,这...

2020-05-06 10:52:30 5508 3

原创 安卓项目实战之SharedPreferences工具类封装

/** * SharedPreferences封装类SPUtils */ public class SPUtils { /** * 保存在手机里面的文件名 */ public static final String FILE_NAME = &a...

2020-05-06 10:52:18 101 0

原创 安卓项目实战之如何debug运行具有release签名的apk

需求分析 众所周知,Android的安装包有测试包(debug版本)和正式包(release版本)之分,一般我们测试时安装的debug版本默认采用的签名都是系统帮我们提供的debug.keystore签名文件,该文件位于C:\Users\Administrator.android目录下,而当我们...

2020-05-06 10:51:48 240 0

原创 安卓轻量级日志框架Logger的使用

优点 1,线程信息:log在哪个线程 2,类信息:log在哪个类 3,方法信息:log在哪个方法的哪一行 4,各种集合输出:list、map、array、set等,(只支持debug输出) 5,将 json、xml 格式化后输出 6,支持参数添加占位符来格式化字符串,Logger.d(...

2020-05-06 10:51:40 92 0

原创 最全面的EventBus 3.1的使用教程及官方推荐的结合订阅者索引processor显著提升性能和实际项目中的使用注意事项

需求场景 无论是现在的项目还是以前的项目中,都会遇见线程之间通信,组件之间通信的需求,我们知道这些需求都可以使用EventBus来处理,但是在EventBus出现以前我们是怎么实现的呢? 1,线程间通信 + Handler消息传递机制 一个Android应用程序被创建的时候都会创建一个UI主...

2020-05-06 10:51:28 223 0

原创 安卓项目实战之:仿微信朋友圈的九宫格自定义控件

效果图 GitHUb地址:https://github.com/HMY314/NineGridLayout 图片展示形式 1、当只有1张图时,可以自己定制图片宽高,也可以使用默认九宫格的宽高; 2、当只有4张图时,以2*2的方式显示; 3、除以上两种情况下,都是按照3列方式显示,但这...

2020-05-06 10:51:14 388 0

原创 安卓项目实战之:帮你从Glide3过渡到Glide4的完美攻略

Glide4:Glide3的API优化版 相比于Glide 3 而言,Glide4并不能算是有什么突破性的升级,而更多的是一些API工整方面的优化,相比于Glide3的API,Glide4进行了更加科学合理的调整,使得易读性,易写性,可扩展性等方面都有了不错的提升,但如果你已经对Glide3非常...

2020-05-06 10:50:54 556 0

原创 安卓项目实战之:关于Android混淆你必须了解的知识点

待整理…

2020-05-06 10:50:35 115 0

原创 安卓项目实战之:Android常用的5种加密方式

前言 按加密结果是否可以被解密分为: 1,不可逆: MD5(Message-Digest消息摘要):不可逆,长度固定(32位),容易计算,仅一字节只差加密结果都会有很大区别 通常情况下为了让加密过程变得不可预测,我们会进行加盐操作。 SHA:安全散列算法,数字签名工具,长度比MD5要长,...

2020-05-06 10:50:24 422 0

原创 安卓项目实战之:Activity和Fragment重新创建时状态的保存和恢复

前言 安卓应用中一个activity的销毁大致分为两种,正常销毁和异常销毁。 正常销毁比如:当用户按 返回按钮或您的Activity通过调用 finish()示意自己的销毁, 异常销毁通俗的说就是指未经过你同意的销毁,比如: 1、当用户按下HOME键时:此时如果按下HOME键后,打开了很多...

2020-05-06 10:50:05 91 0

原创 Tinker热修复——Bugly让热修复变得如此简单

前言 不知你是否遇到这样的情况?千辛万苦上开发了一个版本,好不容易上线了,突然发现了一个严重bug需要进行紧急修复,怎么办?难道又要重新打包App、测试,发布新个版本?就为了修改一两行的代码? 莫慌,这种问题其实可以分分钟解决。如果你学会了这项黑科技——热修复。 在用户使用App的时候,不知...

2020-05-06 10:49:53 114 0

原创 安卓项目实战之:倒计时类CountDownTimer的使用详解

前言 在Android应用中几乎都能看到,闪屏页或者欢迎页右上角有一个 “倒计时 + 跳过” 的功能,还有就是获得验证码的倒计时功能,Android 实现倒计时的方式有多种,Handler 延时发送 Message,Timer 和 TimerTask 配合使用,使用 CountDownTimer...

2020-05-06 10:49:42 98 0

原创 安卓项目实战之Android 6.0运行时权限请求框架PermissionsDispatcher的使用

PermissionsDispatcher是一个用注解方式来处理Android6.0运行时权限的库,旨在高效处理权限问题。

2020-05-06 10:49:31 443 0

原创 安卓项目实战之优雅的退出APP的终极解决方案

前言 现在几乎所有的app都有退出程序的功能(最常见的就是在项目主Activity中连续点击两次返回按钮退出app)至于具体如何实现退出功能,网上有罗列出以下4种方式: 容器式 SingleTask式 广播式 进程式 个人比较推荐使用弱引用的容器式和SingleTask式,在S...

2020-05-06 10:49:20 266 0

原创 安卓项目实战之实现顶部标题栏沉浸式渐变效果

效果图如下: 实现步骤: 1、继承ScrollView实现自定义的ObservableScrollView.java类,代码如下: public class ObservableScrollView extends ScrollView { /** ...

2020-05-06 10:48:25 692 1

原创 安卓项目实战之BaseActivity的封装(已更新)

BaseActivity封装初步如下: /** * 我们一般会在 onCreate()与onDestory() 里面做功能初始化、注销这样一些动作, * 比如:推送的注册注销、友盟、eventbus初始化 activity管理堆栈的进栈出栈等等这些事情。 */ public a...

2020-05-06 10:48:12 1070 5

原创 安卓项目实战之:安卓7.0优化下的全局网络连接状态监听

1,添加权限 <!-- 访问网络. --> <uses-permission android:name="and...

2020-05-06 10:47:57 231 3

原创 MMKV:用来替代SharePreference的高性能key-value组件

介绍 MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。 GitHub地址:https://github.com/Tencent/MMKV 支持的数据类型 1,支持以下 Java 语言基础类型: bo...

2020-05-06 10:47:42 226 2

原创 安卓项目实战之ButterKnife8.8.1的详细使用

ButterKnife简介 ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKn...

2020-05-06 10:47:28 1086 0

原创 安卓项目实战之:开源框架BaseRecyclerViewAdapterHelper的使用

添加依赖 1,在Project的build.gradle文件下添加: allprojects { repositories { ... maven { url &amp...

2020-05-06 10:47:09 3273 1

原创 Android多渠道打包教程

前言 多渠道打包一般应用于向不同应用市场提交app后用来统计不同渠道下载安装量等一些信息。渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等,一般来讲,这个渠道的标识会放在AndroidManifest.xml的Applicatio...

2020-05-06 10:46:38 56 0

原创 安卓项目实战之:更优雅的方式获取安卓设备的唯一标识码

前言 最近,项目中有一个需求,需要发送当前设备的机器码给后台,最开始采用了DEVICE_ID,获取方式如下: TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); Strin...

2019-12-05 16:03:25 522 0

转载 Android性能优化(一):布局优化

前言 在Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性、复杂度也会随之增长,这样使得UI布局的优化,显得至关重要,UI布局不慎,层级嵌套太深,就会引起过度绘制,从而造成UI卡顿的情况,直接影响用户体验,本篇博客,我就来总结一下UI布局优化的相关技巧...

2019-03-17 15:23:14 138 0

转载 优雅地使用OkHhttp3实现WebSocket长连接

前言 个人认为websocket其实本质上是对websocket协议的强调,这也是websocket建立长连接的灵魂,关于websocket不清楚的同学可以参看我的另外一篇博客: 最近项目中需要实现服务器实时更新数据到客户端的推送功能,打算使用websocket来完成,而刚好OkHttp从3....

2019-02-23 19:52:25 271 0

原创 WebSocket协议的由来以及与Http协议的异同

websocket要解决的问题 WebSocket主要被用来解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮询问题,即就是不使用轮询的方式,而是服务器端主动推数据的方式,但是该种方式需要依赖我们今天要讲的websocket协议来完成。 目前我们PC端使用的浏览器都已经支持h...

2019-02-23 18:38:35 285 0

转载 基于TCP协议和UDP协议的原生Socket通信

基于TCP协议的Socket编程 既然是基于TCP,那么就有他的一套代码逻辑体系,我们只需要在Socket API的帮助下,使用TCP协议,就可以进行一个完整的基于TCP协议的Socket网络编程了。 主要API Socket,客户端相关 1,构造方法 Socket(String hos...

2019-02-23 18:05:47 166 0

原创 安卓Socket网络编程基础知识回顾

网络编程基础 TCP/IP协议是什么 (transfer control protocol/internet protocol传输控制协议/网际协议) 我们先从宏观上来看两台机器是如何进行通信的:两台主机进行通信,需要知道双方电脑的地址,也就是IP地址,知道了地址之后,我们还需要知道发送到目...

2019-02-23 18:03:17 214 0

转载 AppBarLayout滑动回弹以及抖动问题的解决方案以及监听AppBarLayout的滑动状态来动态设置标题

AppBarLayout滑动时回弹以及抖动的解决方案 1,继承AppBarLayout.Behavior来实现自定义的AppBarLayoutBehavior,代码如下: /** * 解决appbarLayout若干问题: * (1)快速滑动appbarLayout会出现回弹 * (2)快...

2019-01-21 18:06:02 1986 0

原创 安卓项目实战之:关于Fragment构造方法传参问题的解决方案以及两种序列化方案的对比和Parceable形式下boolean类型字段的封装

前言 在我们平常开发中经常会用到Fragment,当我们使用Fragment时一般是通过new Fragment的构造方法来实现,并且在实际的项目开发中,我们经常会用到TabLayout+ViewPager+Fragment的方式来实现tab切换效果,此时所有tab对应的fragment有可能布...

2019-01-21 17:39:12 115 0

原创 5步学会表单验证框架android-saripaar的使用

github地址:https://github.com/ragunathjawahar/android-saripaar 1,添加依赖 compile 'com.mobsandgeeks:android-saripaar:2.0.3' 2,为组件添加注解,例如: ...

2018-12-28 15:16:35 433 0

原创 安卓项目实战之:RecyclerView实现中奖公告列表信息垂直自动无限滚动效果

效果图 实现的思路 通过调用RecyclerView的smoothScrollToPosition(int position)方法我们可以实现平滑的滚动到参数所指定的position的位置,如果仅仅是调用了该方法那么滚动将会以系统默认的速度来进行,并且该速度通常是非常快的,快到如果将参数pos...

2018-12-20 02:44:29 1076 1

转载 关于Android中通知栏的讲解及适配Android 8.0

前言 通知栏是Android系统原创的一个功能,虽然乔布斯一直认为Android系统是彻彻底底抄袭IOS的一个产品,但是通知栏确实是Android系统原创的,反而苹果在ios 5之后也加入了类似的通知栏功能。 通知栏的设计非常巧妙,他默认情况下不占用任何空间,只有当用户需要的时候用手指在状态栏...

2018-12-15 14:43:21 214 0

转载 安卓项目实战之:基于StackBlur封装的好用的高斯模糊组件

前言 基于 Android StackBlur 开源库做的二次封装。封装的目的在于,方便外部使用。StackBlur开源库只是提供了基础的功能,在实际的开发中,产品的需求是各种各样的,这样就导致每次使用时,都需要自己额外处理很多东西写一些代码。而一旦新的项目又需要接入高斯模糊了,又得重新写相似的...

2018-12-07 13:34:10 375 0

原创 安卓项目实战之:最实用的加载中、无网络、无数据、出错四种情况切换库的使用总结

效果图 录出来的效果不是很好,真机上展示效果还算完美。 如图所示该效果的实现依赖三个库: 1,顶部Tab导航:比TabLayout功能更强大的FlycoTabLayout,具体使用查看本人之前博客:安卓项目实战之:FlycoTabLayout和FlycoRoundView的介绍及使用 2,精美的...

2018-12-07 11:39:51 1302 0

原创 安卓项目实战之:gradle配置中BuildConfig自定义字段的妙用

前言 众所周知,Android应用版本有debug测试版本和release正式版本之分,在平时的开发和调试中,有一些变量需我们要根据版本的不同去做相应的改变,例如服务器ip的设置,测试阶段我们一般使用测试服务器,正式上线之后我们必须使用正式服务器,很多人的做法都是在产品上线的时候手动的去改变这个...

2018-12-05 11:54:48 432 0

转载 Android实用技能:你应该掌握的APK反编译技巧以及重新打包发布

需要的工具 1,apktool: 反编译获取资源文件的工具,包括图片资源和布局文件等的获取 下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads 2,dex2jar:反编译获取源码的工具,将classes.dex 转化为jar文件 ...

2018-12-04 12:30:46 141 0

原创 安卓项目实战之:ToolBar的使用介绍

ToolBar简介 Toolbar是谷歌在2014年Google IO 大会上推出的一套全新的设计规范Material Design中的控件之一,主要是用来在android 5.0之后代替Android传统的标题栏ActionBar的,引入在android-support-v7兼容包下,使用Too...

2018-12-03 06:11:27 1743 0

原创 安卓项目实战之:最实用的Retrofit2+RxJava2+MVP框架搭建,避免各种内存泄漏

1,RetrofitHelper 主要用于Retrofit的初始化: public class RetrofitHelper { private Context mCntext; OkHttpClient client = new OkHttpClient(); ...

2018-11-30 04:58:03 843 0

转载 安卓项目实战之与UI那点事:图片适配你必须要了解的知识点

1,mipmap和drawable的区别之: 在Android4.2以上的版本中,提供了对mipmaps的支持,如果你用Andorid Studio开发Android程序会发现Android Studio自动帮你创建了几个mipmaps文件夹,每次新建一个工程的时候,总是先把mipmap删掉,新...

2018-11-29 00:07:47 190 0

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