0%

一、杂谈

前一阵子博客备案因为名字问题被驳回了两次也是够了,现在在公司里一直写业务代码,这让本来就不会的算法的我算法水平更加烂,最近在跟着优酷上的一个小姐姐学魔方,智商跟不太上了啊哈哈哈哈哈。OK,步入正题,名字叫Retrofit异常处理,可是内容应该主要是针对网络的统一异常处理,我之前的异常处理都是在BaseActivity或者是BaseFragment中去添加一个方法,然后在网络请求有问题时去调用这个方法,但是后来我把我用频率较多的代码(包括Base)打包发布了一个仓库AndroidQuick,这样的话我的异常处理就没法在Base层里面处理了,而且本身的处理方式就有很多不完善的地方。

阅读全文 »

一、引入

快速排序是所有排序算法中最高效的一种。它采用了分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序。

阅读全文 »

一、引入

  1. Android在7.0中修改了文件权限,所以从Android7.0开始要使用FileProvider来处理uri,从网上找了好多文章,解决了在7.0下拍照及相册选图的问题,但是参照网上的解决方案前切图片一直搞不定,最终使用了UCrop进行剪切图片并返回文件地址,便于与服务器交互。
  2. 本文主要介绍在Android7.0上进行拍照,相册选图以及相应的图片剪切,当然也会向下兼容,同时我也在Android4.3的手机上进行了测试,在文章最后我会附上源码,会有我自认为详细的注释哈哈。

阅读全文 »

一、引入

  1. 使用Kotlin以单例形式做了一个简单的Retrofit封装,因为业务需要,要将token添加到请求头当中,所以使用了okhttp的拦截器做了简单封装,使其能够满足当前的业务需求,可以能够动态修改拦截器中的请求头信息。额(⊙﹏⊙)描述实在是写不了,还是看代码吧。
  2. 如果对于Retrofit或RxJava还不是很了解可以看一下我的博客早些时候的文章了解一下。
阅读全文 »

一、引入

  1. 在项目中应该经常会用到ViewPager+Fragment来显示界面,但是ViewPager会有预加载,这样的话有些东西会无法把控,还有就是刚进入App时可能会一次请求多个接口,在显示上可能会造成某些不可预知的问题,虽然可以禁用掉预加载,但是目前据我所知用得较多的方式是修改ViewPager的源码,而且这个源码并不是最新版本,禁用后也不会缓存已加载过的页面,这样滑动时可能在用户体验上有些不友善。

  2. Fragment有一个setUserVisibleHint(boolean isVisibleToUser)方法,他可以监听当前页面是否在前台,但是他会在onCreateView方法之前执行,这样的话因为此时布局还没有加载,所以可能会引发NullPointException导致程序Crash,在这里记录下如何使用setUserVisibleHint进行懒加载并且避免程序Crash。

阅读全文 »

一、简述

Dagger2是一个Android目前较为主流的依赖注入框架,最早的版本Dagger1 由Square公司开发,现在Dagger2由谷歌接手开发,主要用于模块间解耦,提高代码的健壮性和可维护性。之前也断断续续看过好多文章,今天正式学习一下。并且额外介绍下如何在Kotlin中使用Dagger2,写的不好,还请见谅!

阅读全文 »

一、简述

  1. 大家应该都听过了MVP+RxJava+Retrofit+Dagger2+巴拉巴拉巴拉,这篇文章主要介绍其中的Retrofit以及RxJava2与Retrofit的简单结合。
  2. Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可。
  3. 其实写不写这个我是纠结了好久的,Retrofit太高深,也从网上看了好多教程,对于菜菜的我真不敢写,但是最后还是抱着以后方便查阅的心态写了下来。
  4. 本文目前只讲了Retrofit入门,get请求,post请求,以及如何与rxjava结合,后期可能会继续完善,文中的接口除第一个入门例字外其它的两个是我简单写的放在了腾讯云的学生机上(感谢腾讯云!)。
  5. Retrofit项目地址:https://github.com/square/retrofit
阅读全文 »

一、简述

  • 或多或少老哥们都了解自定义View是啥,本篇文章选了一个比较简单的例子来当做示例,希望大佬们能够喜欢。
  • 知识点:自定义属性attrs的简单使用,通过继承View重写onDraw方法使用Canvas来绘制,关于Canvas的用法和View基础可以看我前面写的文章。

阅读全文 »

一、简述

  • View是Android中所有控件的基类
  • 本文Demo都是在自定义View中进行的,文末有下载链接
    1. View的位置参数
    2. MotionEvent屏幕触摸事件
    3. GestureDetector手势检测(单击,双击,长摁,滑动)
阅读全文 »

一、简述

  1. 本文主要包含Canvas(画布)与Paint(画笔),详细介绍了相关api。
  2. canvas的所有的单位均为像素,下文demo仅适配分辨率1080*1920的屏幕。
  3. 关于view基础及dp与px的转换可以看View位置及触摸事件这篇文章。
  4. 请注意一个问题:如果在onDraw方法中绘制的,但是onDraw方法没有走,请在构造函数中添加setWillNotDraw(false);

    解释:设置view是否更改,如果开发者用自定义的view,重写onDraw()应该将调用此方法设置为false,这样程序会调用自定义的布局。

阅读全文 »