自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(254)
  • 资源 (10)
  • 收藏
  • 关注

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

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

2020-05-06 10:52:42 768

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

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

2020-05-06 10:52:30 13904 5

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

/** * SharedPreferences封装类SPUtils */public class SPUtils { /** * 保存在手机里面的文件名 */ public static final String FILE_NAME = "share_data"; /** * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法

2020-05-06 10:52:18 569

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

优点1,线程信息:log在哪个线程2,类信息:log在哪个类3,方法信息:log在哪个方法的哪一行4,各种集合输出:list、map、array、set等,(只支持debug输出)5,将 json、xml 格式化后输出6,支持参数添加占位符来格式化字符串,Logger.d(“hello %s”, “world”);7,支持从日志跳转到源码8,弥补了“android的logcat的m...

2020-05-06 10:51:40 1328

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

需求场景无论是现在的项目还是以前的项目中,都会遇见线程之间通信,组件之间通信的需求,我们知道这些需求都可以使用EventBus来处理,但是在EventBus出现以前我们是怎么实现的呢?1,线程间通信 + Handler消息传递机制一个Android应用程序被创建的时候都会创建一个UI主线程,但是有时候我们会有一些比较耗时的操作,比如请求网络,为了防止阻塞UI线程,导成应用程序ANR,我们会将...

2020-05-06 10:51:28 726

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

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

2020-05-06 10:51:14 1210

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

Glide4:Glide3的API优化版相比于Glide 3 而言,Glide4并不能算是有什么突破性的升级,而更多的是一些API工整方面的优化,相比于Glide3的API,Glide4进行了更加科学合理的调整,使得易读性,易写性,可扩展性等方面都有了不错的提升,但如果你已经对Glide3非常熟悉的话,并不是就必须要切换到Glide4上面来,因为Glide4能实现的功能Glide3也能实现,而且...

2020-05-06 10:50:54 1277

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

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

2020-05-06 10:50:24 5365 1

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

前言安卓应用中一个activity的销毁大致分为两种,正常销毁和异常销毁。正常销毁比如:当用户按 返回按钮或您的Activity通过调用 finish()示意自己的销毁,异常销毁通俗的说就是指未经过你同意的销毁,比如:1、当用户按下HOME键时:此时如果按下HOME键后,打开了很多其他的应用程序,那么在前台应用需要更多内存的情况下,该Activity就有可能被系统销毁。2,长按HOME键...

2020-05-06 10:50:05 1029

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

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

2020-05-06 10:49:53 2196 1

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

前言在Android应用中几乎都能看到,闪屏页或者欢迎页右上角有一个 “倒计时 + 跳过” 的功能,还有就是获得验证码的倒计时功能,Android 实现倒计时的方式有多种,Handler 延时发送 Message,Timer 和 TimerTask 配合使用,使用 CountDownTimer 类等。相比而言,经过系统封装的 CountDownTimer 算是使用起来最为方便的方式之一。Cou...

2020-05-06 10:49:42 1508

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

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

2020-05-06 10:49:31 1297

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

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

2020-05-06 10:49:20 768

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

效果图如下:实现步骤:1、继承ScrollView实现自定义的ObservableScrollView.java类,代码如下:public class ObservableScrollView extends ScrollView { /** * 回调接口监听事件 */ private OnObservableScrollViewListene...

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

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

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

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

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

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

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

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

ButterKnife简介ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成...

2020-05-06 10:47:28 2264

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

添加依赖1,在Project的build.gradle文件下添加:allprojects { repositories { ... maven { url "https://jitpack.io&qu

2020-05-06 10:47:09 13047 7

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

前言最近,项目中有一个需求,需要发送当前设备的机器码给后台,最开始采用了DEVICE_ID,获取方式如下:TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String DEVICE_ID = tm.getDeviceId();它会根据不同的手机设备返回IMEI,MEI...

2019-12-05 16:03:25 1003

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

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

2019-03-17 15:23:14 344

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

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

2019-02-23 19:52:25 1033

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

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

2019-02-23 18:38:35 726

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

基于TCP协议的Socket编程既然是基于TCP,那么就有他的一套代码逻辑体系,我们只需要在Socket API的帮助下,使用TCP协议,就可以进行一个完整的基于TCP协议的Socket网络编程了。主要APISocket,客户端相关1,构造方法Socket(String host,int port)创建一个流套接字并将其连接到指定主机上的指定端口号,即就是连接到host主机上的port...

2019-02-23 18:05:47 445

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

网络编程基础TCP/IP协议是什么(transfer control protocol/internet protocol传输控制协议/网际协议)我们先从宏观上来看两台机器是如何进行通信的:两台主机进行通信,需要知道双方电脑的地址,也就是IP地址,知道了地址之后,我们还需要知道发送到目的电脑的哪个软件,一般使用端口来标记。这样两台电脑连接成功之后就可以传递数据了。关于目的地如何规定,要发送...

2019-02-23 18:03:17 513

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

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

2019-01-21 18:06:02 4896

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

前言在我们平常开发中经常会用到Fragment,当我们使用Fragment时一般是通过new Fragment的构造方法来实现,并且在实际的项目开发中,我们经常会用到TabLayout+ViewPager+Fragment的方式来实现tab切换效果,此时所有tab对应的fragment有可能布局都是一致的,唯一的区别就是数据源不同,这时感觉就没有必要定义那么多的Fragment了,我们只需要定义...

2019-01-21 17:39:12 679

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

github地址:https://github.com/ragunathjawahar/android-saripaar1,添加依赖compile 'com.mobsandgeeks:android-saripaar:2.0.3'2,为组件添加注解,例如: @Order(1) @NotEmpty(message = "用户名不能为空") @Length(min=6,...

2018-12-28 15:16:35 1289

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

效果图实现的思路通过调用RecyclerView的smoothScrollToPosition(int position)方法我们可以实现平滑的滚动到参数所指定的position的位置,如果仅仅是调用了该方法那么滚动将会以系统默认的速度来进行,并且该速度通常是非常快的,快到如果将参数position的值设置的很小可能会看不到滚动的过程而直接看到结果,设置稍微大点例如为100时就会看到2秒的滚动...

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

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

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

2018-12-07 13:34:10 1759

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

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

2018-12-07 11:39:51 2052

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

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

2018-12-05 11:54:48 1522

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

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

2018-12-04 12:30:46 466

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

ToolBar简介Toolbar是谷歌在2014年Google IO 大会上推出的一套全新的设计规范Material Design中的控件之一,主要是用来在android 5.0之后代替Android传统的标题栏ActionBar的,引入在android-support-v7兼容包下,使用ToolBar能实现和ActionBar一样的效果,并且ToolBar继承自ViewGroup,使用起来也是...

2018-12-03 06:11:27 6733

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

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

2018-11-30 04:58:03 1800

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

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

2018-11-29 00:07:47 588

转载 安卓项目实战之:4步实现用一个recyclerview实现列表嵌套效果,完美替代RecycleView嵌套方案

https://blog.csdn.net/csdn_mm/article/details/80918323

2018-11-27 00:23:51 5014 1

转载 RecycleView进阶:使用GridLayoutManager.SpanSizeLookup来动态实现具有不同尺寸的Item

前言现在基本所有的安卓开发都使用RecycleView替换了ListView和GridView,RecycleView使用的灵活性以及其功能的强大相信大家也深有感触,同时使用RecycleView我们也可以很方便的实现一些复杂布局,例如下面这样的页面:该页面中,同时包含列表,2列的网格,3列的网格,按照我们之前的逻辑,拿到这样的页面肯定是在想什么RecycleView嵌套啦,ScrollVi...

2018-11-25 18:21:34 3416

转载 ScrollView中嵌套recycleView 出现的不显示,显示不全,终极解决方案

https://www.cnblogs.com/woaixingxing/p/6098726.html

2018-11-21 20:33:00 565

原创 具有懒加载功能的 Fragment基类封装和一般的Fragment基类封装

封装如下:public abstract class BaseLazyLoadFragment extends Fragment { private boolean isFirstLoad = false; protected View view; @Nullable @Override public View onCreateView(LayoutI...

2018-11-21 20:28:21 978 1

原创 Failed to resolve: com.android.support:support-annotations:26.0.2的解决方案

在添加依赖的时候,出现如下报错:说我缺少了support-annotations:26.0.2的依赖,那么问题来了,什么是support-annotations?我的项目里面用到了吗?support-annotations注解库简介android-support-annotations是Android官方提供的一个注解库,它提供了许多有用的注解,你能用它们修饰你的代码,帮助你发现bug,这...

2018-11-20 19:44:04 5360

fun_android_flutter-master.zip

flutter开源项目学习使用flutter开源项目学习使用flutter开源项目学习使用flutter开源项目学习使用flutter开源项目学习使用

2020-03-22

OBSStudio_v24.0.3.rar

主播专用obs工具主播专用obs工具主播专用obs工具主播专用obs工具主播专用obs工具主播专用obs工具

2020-03-09

git版本管理工具windows64位下载.zip

git版本管理,实际工作中项目开发必备工具,windows64位下载

2019-09-16

360jiagubao_windows_64.zip

非常好用的一款加固签名工具,支持加固,签名,以及多渠道打包

2019-06-13

listview多行多列单选

局部刷新,设置了值setNum时需要刷新,没有设置值时也需要刷新item来进行颜色的变化

2018-12-29

HiJson格式化工具

HiJson格式化工具,包含32位和64位,开发必备,提高开发效率

2018-12-24

Jdk and Nopad++

包含Jdk8 和 文档查看工具Nopad++,因为studio_bundle太大,所以此处没有放进来,大家根据博客中给出的网址,选择第一个下载就可以了

2018-12-24

APK反编译工具包

APK反编译工具包中包含以下三个工具: 1,apktool_2.3.4.jar 2,dex2jar-2.0.zip 3,jd-gui-windows-1.4.0.zip

2018-12-04

retrofit2 + rxjava 2 + MVP

Retrofit2 + rxjava2 + mvp实现的demo,很实用很全面的例子

2018-11-24

案例的demo

使用CoordinatorLayout打造一个炫酷的详情页,安卓项目实战之CoordinatorLayout实现页面特效(一)

2018-10-27

空空如也

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

TA关注的人

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