zhuhf Blog

路漫漫其修远兮

Jenkins一键发布「apk&ipa」 到Bugly

背景 一大早刚到公司没多久,测试妹妹小韩跑过来:“老王,麻烦给我发一份xxx项目的最新安装包呗?” 老王:“啥,昨天不是发你一个了吗?” 小韩:“我要回归下昨天已解决的bug,所以~” 于是,老王蹭蹭蹭打开IDE,N分钟后一个安装包通过QQ扔给了小韩。五分钟后,小韩又跑过来了 小韩:“昨天你关闭的xxx bug好像没解决吧,我操作给你看下~” 老王放下手中的山东煎饼,盯着小韩的操...

Android 7.0适配-应用之间共享文件(FileProvider)

一、前言 Android 7.0强制启用了被称作 StrictMode的策略,带来的影响就是你的App对外无法暴露file://类型的URI了。 如果你使用Intent携带这样的URI去打开外部App(比如:打开系统相机拍照),那么会抛出FileUriExposedException异常。 官方给出解决这个问题的方案,就是使用FileProvider: 我们来看一段代码: Str...

Android自定义ViewGroup神器-ViewDragHelper

一、概述 ViewDragHelper is a utility class for writing custom ViewGroups. It offers a number of useful operations and state tracking for allowing a user to drag and reposition views within their par...

Android轻量级路由框架LiteRouter

前言 开始之前,我们介绍一下什么是“路由”? 路由这个概念来自于Web前端开发,引用知乎网友的解答: 不同的请求地址会交给路由处理来转发给相应的控制器处理,所以说路由就可以在转发前修改转发地址,你可以在这上面大作文章。 简单的概括:路由是一个框架,可以控制、转发对页面的跳转,并在跳转之前做任何你想要的处理。 那么,Android中为何要引入一个Web中才有的路由概念? 如果你...

Retrofit2源码分析

前言 本文将顺着构建请求对象->构建请求接口->发起同步/异步请求的流程,分析Retrofit是如何实现的。 开始之前,我们先看下Retrofit的基本使用方式 Step1: public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> lis...

RecyclerView Divider完美解决方案

关于RecyclerView的使用,不是本文介绍的重点,还不清楚的同学可以参考这篇文章: Android RecyclerView 使用完全解析 体验艺术般的控件。 RecyclerView替代ListView势在必行,唯一比较遗憾的是官方没有内置几个好用的ItemDecoration,这使得很多人觉得使用起来比较麻烦。 有幸站在巨人的肩膀上,github上有大神实现了一个:Recycl...

Android NestedScrolling机制

一、概述 这样一个效果图,我们思考下如何实现 可以看到“Sticky View”滚动到顶部会“固定住”,列表下拉到第一条数据“Sticky View”又会一起往下滚动。 有人说,这个不就是View的事件分发吗? 假设我们按照传统的事件分发去理解,我们滑动的是下面的内容区域View,但是滚动的却是外部的ViewGroup,那么肯定是ViewGroup拦截了子View的事件;但是,上...

刨根问底-论Android“沉浸式”

网上谈论“沉浸式”的文章多的不可胜数,有人把“沉浸式”叫做“沉浸式状态栏”,还有人称作为“透明状态栏”、“变色状态栏”等。 这里我们先给出“沉浸式”的直观感受,引用“知乎”网友的答案 使用带虚拟键的手机才能明显感觉到沉浸式所带来的变化:状态栏、导航栏隐藏。 而对于使用实体按键的手机的用户来说,“沉浸式”所带来的变化仅仅是状态栏隐藏,事实上,状态栏隐藏在之前也很常见,各种国产应用启动时...

Android中如何优雅的实现分页

何为分页? 以QQ好友列表为例:假如你的好友总共有100个,那么考虑性能等因素,第一次只获取并显示前10条数据。当用户加载更多时,再去获取后面的10条数据,并与之前的数据合并一起展示给用户。 让我们看下常见的几种写法(仅关键代码): 写法一 public class XActivity extends Activity { int currentIndex = -1; /...

[React Native]Redux的基本使用方式

前言 好久不写文章了,这段时间断断续续在学习Redux。Redux对于新手,尤其我这样一个之前从未做过WEB开发,也不知何为Flux,确实不太好理解。所以,我准备用一个简单的示例,来演示如何编写一个基于Redux的程序。 关于Redux的前世今生,不是本文介绍的重点。建议读者在有一定Redux认知的基础上来阅读本篇文章,不然可能看的还是云里雾里,这里推荐几个介绍Redux的文章: 看...