自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

huch的博客

Android React-Native React开发

原创 Android不集成sdk直接调起原生地图App 路径规划、导航

在我们App开发过程中,经常会有一个优化用户体验的需求:查看某个地址时,给用户提供出路径规划,进行导航。 如果本身App不属于LBS应用的话,为了一个小功能点就去集成各大地图SDK,有点杀鸡用牛刀的感觉,增加了apk的体积,得不偿失。 那么大家第一个想到的是官方有提供不用集成sdk,就能调起地图A...

2018-10-15 02:29:22 927 0

原创 Android内存泄露之非静态内部类|匿名内部类 默认持有外部类的引用

什么是内存泄露? Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收;另外,如果一组对象中只包含互相的引用,而没有来自它们外部...

2018-09-19 12:11:44 1934 0

原创 Android内存泄露之InputMethodManager mNextServedView导致的内存泄露

E/MessageQueue: IdleHandler threw exception java.lang.NullPointerException: Null reference used for synchronization (monitor-enter) at ...

2018-09-11 11:52:03 1092 6

原创 npm ERR! cb() never called! 解决办法

执行npm i 命令时,出现了npm ERR! cb() never called!错误 解决方案: 1、首先清除你的npm缓存: sudo npm cache clean -f 一般情况执行完后再试下 应该就OK了 2、如果1方法不奏效的话,只能采用升级覆盖安装: 清除完缓存后,安装...

2018-09-07 20:54:01 20141 0

原创 bash: react-native: command not found

RN搭建开发环境 Yarn是 Facebook 提供的替代 npm 的工具,可以加速 node 模块的下载。React Native 的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。 出现bash: react-native: command not fou...

2018-09-07 20:34:03 1955 1

原创 不透明度百分比 16进制值对照表;rgb色值16进制转化原理

不透明度 16进制值 100% FF 95% F2 90% E6 85% D9 80% CC 75% BF 70% B3 65% A6 60% 99 55% ...

2018-09-01 21:56:48 1218 0

原创 Android布局优化之ConstraintLayout

ConstraintLayout是属于Android Studio 2.2的新特性,现在使用As构建默认的Activity,其对应的页面根布局已由RelativeLayout替换成ConstraintLayout,可见官方对其的推荐程度。 <?xml version="1...

2018-08-30 01:28:04 321 0

原创 Android布局优化之 ViewStub 、include、merge 使用及源码分析

我们先看一个Activity的页面布局结构: 从上可以看出平常咱们实际绘制的页面布局其实是处在第3层。 一、include include标签就是为了解决重复定义相同布局的问题。 例如页面中常用到的标题栏,它几乎是用在所有页面的顶部,在不使用include的情况下咱们需要在每个界面...

2018-08-30 00:13:27 314 0

原创 Regular、Normal、Medium、Light 对应的font-weight值

开发中设计师所出的设计图描述字重的地方往往是这样的: 如上2图描述字重的地方用的是Regular,知道这对应的font-weight值是多少吗? 字体粗细:‘font-weight’属性 名称: font-weight 取值: normal | bold | bolder | li...

2018-08-28 22:13:13 14725 1

原创 WebView 打印web端的console日志(如console.log)

在Android Webview中如何打印web端的console日志呢? 1.调试Web应用程序 Debugging Web Apps 如果您使用运行Android 4.4或更高版本的设备测试您的网络应用,则可以WebView使用Chrome开发者工具远程调试您的网页,同时继续支持旧版And...

2018-08-27 17:45:57 9244 0

原创 RecyclerView 通用Adapter添加头部、尾部 参考ListView的源码实现(二)

前面一篇RecyclerView 通用Adapter添加头部、尾部 参考ListView的源码实现(一)文章中的实现的RecyclerBaseAdapter是有一些缺陷的,它只适用于头部、尾部ItemViewType类型为仅为一种。 后面稍微改进了一下,允许多ItemViewType,但是需要开...

2018-08-25 19:17:47 320 0

原创 在React-Native、React中 设计模式之模板方法模式的应用

大家在写Java、Android程序时,肯定都会用到设计模式之模板方法模式(一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现)。 搭Android框架时,都会去写一个基类BaseActivity: 基类: public abstract class BaseActivity ext...

2018-08-24 22:45:57 655 0

原创 InteractionManager.runAfterInteractions 手势左滑退出后 不再触发回调

前面一篇文章Navigator 过渡动画卡顿的解决方案,提到了 InteractionManager.runAfterInteractions这个解决方案。 InteractionManager Interactionmanager可以将一些耗时较长的工作安排到所有互动或动画完成之后再进行。这样...

2018-08-24 19:39:36 1402 0

原创 ios Rn0.44 Xcode9 ScrollView下拉距离过短或下拉刷新后 不能自动回弹、复位置顶

早期做RN的时候是基于0.44版本的,后面做需求迭代版本时候因人手不够也没去主动升级,一直拖到近期才升级到0.55+,且还未完成兼容测试。但目前因为有个小需求需要捉急上线,于是就还在老分支上开发,然后打包上线(用的Xcode 8.3)。 接着坑来了,从 2018 年 7 月开始,所有新的 iOS...

2018-08-23 02:26:06 467 0

原创 h5 ios中软键盘弹起后 fixed定位失效

position: fixed;在ios手机中会存在一个失效情况: 如果页面有输入框存在,点击输入框软键盘弹起后会发现原先fixed定位在顶部的View不见了,ran’h

2018-08-21 15:20:17 4637 0

原创 h5 移动端 监听软键盘弹起、收起

前面一篇博客 h5 安卓 键盘弹起界面适配 修改webview高度提到了在Adnroid中如何监听软键盘的弹起与收起,是利用的窗口的高度发生变化 window.onresize事件来做突破点的,但是ios中软键盘的弹起收起并不触发window.onresize事件。 总结: 1.在ios中软...

2018-08-21 13:18:32 24957 13

原创 React-Native Navigator 过渡动画卡顿的解决方案

在Rn0.44版本之前,路由导航跳转几乎是使用的是Navigator组件,在0.44版本以后就不推荐使用了,官方推荐的是react-navigation,当然还是可以在废弃的库中找到: import { Navigator } from 'react-native-deprecated...

2018-08-14 16:50:08 2193 0

原创 RecyclerView 通用Adapter添加头部、尾部 参考ListView的源码实现(一)

首先我们看下以前的ListView是如何实现addHeaderView、addFooterView 1.先看ListView.setAdapter(ListAdapter adapter) 方法 2.再看addHeaderView、addFooterView方法 以上2个方法中都用到...

2018-08-12 12:21:12 1655 0

原创 参数名按ASCII码大小排序 冒泡算法实现

上一篇博客签名算法 待签名参数按照字段名的ASCII码大小排序 Android、JS中实现中提到的排序方法实现都是利用系统的api,在这里想用一下底层算法来实现: 1.先看系统api实现 String[] data = new String[]{"key", &qu...

2018-08-12 00:30:32 1743 0

原创 签名算法 待签名参数按照字段名的ASCII码大小排序 Android、JS中实现

验签是作为一个api接口避免裸奔的必要手段之一,原理就是前后端约定一套签名规则,首先前端在请求api接口时会增加一个sign参数,其值来源是对所提交的参数按照约定的签名规则去生成;接着后端同样会针对其接收到的参数(除sign外)按照约定的签名规则也生成一个sign,然后对2者进行比较,如果不一致则...

2018-08-11 22:27:11 2860 0

原创 优化Webview加载速度 TBS(腾讯浏览服务X5内核) | VasSonic(提升H5首屏加载速度)

浏览增强 传统系统内核(Webview)存在适配成本高、不安全、不稳定、耗流量、速度慢、视频播放差、文件能力差等问题,这是移动应用开发商在进行Hybrid App开发时普遍面临的难题。腾讯浏览服务基于腾讯X5内核解决方案(包括内核和云服务),能够有效解决传统移动web技术面临的普遍问题,同时能...

2018-08-02 13:23:10 3042 0

原创 css 0.5px 间隔细线 | border 细线的实现 参考WeUI

在Android中系统是识别0.5dp的,但是在web中浏览器内核在遇到0.5px时会向上取整为1px。 前端UI设计的间隔线都是设计0.5px,这时候用border-bottom: 1px solid #e6e6e6; 效果还是很粗的,UI复核页面的时候肯定不过关的。 下面说一下参考WeU...

2018-07-31 17:55:16 4041 0

原创 getBackground().setAlpha(0)引发的血案 页面背景变灰色底

开篇先扯下场景哈,大家应该都见过一个很常见的UI交互,默认进一个页面看见顶部TitleBar背景是透明的,随着向上滑动查看底下内容的时候,TitleBar背景逐渐变不透明直至不透明度100%; 为了实现这个效果,我们通常的做法是监听向上滚动的距离,然后跟设定的某个最大滚动距离去求百分比,再把这个...

2018-07-27 00:22:42 977 1

原创 gradle使用技巧(def定义变量 rootProject.ext 添加全局变量)

在主app目录下的build.gradle中我们可以这样写: def packageTime() { return new Date().format("yyyy-MM-dd") } def versionMajor = 1 def versionMinor = 1 ...

2018-07-19 19:56:03 14987 1

原创 gradle自动生成BuildConfig类的妙用

说BuildConfig类之前,先谈谈通常会遇到的场景: 1.Log打印日志这个需求,通常大家都会写一个LogUtils工具类,暴露一些常用的log.e log.d log.i等方法, 在方法会用到一个静态常量去作为开关。 2.Api接口地址的变换这个需求,通常都是写一个类里面放上一个静态常...

2018-07-17 20:40:36 6430 0

原创 build插件升级到gradle3.0+ 多渠道打包applicationVariants、compile语法更换

随着AndroidStudio升级到3.0+,自带的build插件也从2.x升级到3.x时代,有升级就会有调整,下面把遇到的语法改变列出: 针对依赖资源库: compile =》 implementation dependencies { compile fileTree(i...

2018-07-16 15:36:10 7701 0

原创 Android 多点触控 RadioGroup + Fragment 实现的底部Tab 能防止用户同时点击多个button而只响应一个有效事件吗?

Android底部导航栏(底部Tab)是一个Android程序员入门必须会实现的一个功能点,在Material Design(基于Android 5.0 API level 21)设计出来之前大家实现底部Tab通常会用FragmentTabHost或RadioGroup方式。而在有了 Andro...

2018-07-02 02:06:54 559 0

原创 okhttp-3.10.0 build错误:Type `org.conscrypt.Conscrypt` was not found, it is required for default

错误信息: Type `org.conscrypt.Conscrypt` was not found, it is required for default or static interface methods desugaring of `okhttp3.internal.platform.P...

2018-06-30 11:35:29 3778 0

原创 AndroidStudio3.0+ 混淆 Warning:`-keep class *extends java.lang.annotation.Annotation { *; }`

环境: AndroidStuio 3.1.2 gradle 插件版本:'com.android.tools.build:gradle:3.1.2' 在混淆打包的过程中,日志中出现了红色警告: Warning: The rule `-keep public class ...

2018-06-29 15:45:05 7924 2

原创 react react-native 日期插件 m-date-picker / rmc-date-picker的使用

m-date-picker 基于 React,提供了 iOS 风格的日期选择方式,与原生 Datepicker 非常相似。 主页: https://github.com/react-component/m-date-picker Demo: http://react-component.git...

2018-06-20 20:44:40 4758 4

原创 webview http劫持的一点拦截 截取host方法 matcher.group理解

先来了解下常见的网络劫持: dns劫持(域名劫持) 现象就是用户不能访问目的网址或访问的是假网址。 http劫持 现象就是用户访问的看到的页面可能是被恶意修改过的,比如常见的在底部弹出宣传性的广告或者直接某网站的内容。本质是在正常的数据流中插入精心设计的网络数据报文,目的是让用户端程序解释...

2018-06-15 00:11:44 2367 0

原创 npm 常用命令 查看版本、安装、卸载

npm list // 查看本地已安装模块清单 npm list [packageName] // 查看本地已安装模块版本 npm info [packageName] //查看模块的详细信息 包括各版本号等 npm view [packageName] version // 查看模块远程最新版...

2018-06-13 11:40:49 7288 0

原创 git branch git tag git merge git checkout git fetch 常用命令

1.配置git信息 git config --global user.name 'demo' //设置用户名 git config --global user.email 'xxx@qq.com' //设置用户邮箱 ssh-keygen -t r...

2018-06-12 16:18:18 447 0

原创 Android学习博客集锦

JakeWharton: github地址:https://github.com/JakeWharton 代表作:retrofit,butterknife chrisbanes: github地址:https://github.com/chrisbanes 代表作:ActionBar-P...

2018-06-11 23:55:45 508 0

转载 Android 优秀开源项目汇总

Android 优秀开源项目汇总 有那么多漂亮好用的轮子,总是忍不住好好地总结分类收藏一番。 而收藏,当然是为了在可能需要的时候能够迅速果断地找到一个合适我们项目的轮子。 分类 二级分类 框架名称 简介 Star 数 最近更新 UI 刷新 SmartRefreshLayo...

2018-06-11 13:28:32 549 0

原创 h5 App通信 轻量级方式

一般在遇到h5主动通知App的需求,Android的同学可能会使用 webview.getSettings().setJavaScriptEnabled(true); webview.addJavascriptInterface(new JavaClass(this), &a...

2018-06-06 23:20:26 720 0

原创 input maxlength 属性不起作用

大家经常会遇到限制某个输入框的最大长度的需求,比如一个要求输入手机号的输入框: <input type="text" placeholder="请输入手机号码" ...

2018-06-05 22:39:37 19858 1

原创 input onchange事件不触发 oninput onpropertychange onchange 实时监听

做前端的同学,经常会跟输入框打交道,免不了要做实时监听文本输入的需求。 Android中实现 obj.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequen...

2018-06-05 17:21:30 2662 0

原创 brew nvm 安装指定版本node

一般通过brew install node 安装的都是相对brew版本的最新版,这时候我们想切换指定的node版本时,就比较麻烦了,网上之前说的安装brew tap brew tap homebrew/versions 目前已失效了homebrew/versions was deprecat...

2018-06-01 14:45:51 1995 0

原创 mac 安装Node、npm 升级Node、npm

先看Node.js中文网对Node、npm的定义Node.js中文网 Node npm 安装 npm在Node v0.6.x版本之后,内建于Node系统。通过npm可以协助开发者安装、卸载、删除、更新Node.件,并且可以通过npm发布自己的插件。那么就好办了,先安装Node后就自带n...

2018-05-31 16:31:22 29211 2

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