Android
文章平均质量分 52
huch_shyh
码农
展开
-
Android 优秀开源项目汇总
Android 优秀开源项目汇总有那么多漂亮好用的轮子,总是忍不住好好地总结分类收藏一番。而收藏,当然是为了在可能需要的时候能够迅速果断地找到一个合适我们项目的轮子。分类二级分类框架名称简介Star 数最近更新UI刷新SmartRefreshLayout智能下拉刷新框架[详细]12k1天UI刷新Android-PullToRefres...转载 2018-06-11 13:28:32 · 1298 阅读 · 0 评论 -
Android内存泄露之非静态内部类|匿名内部类 默认持有外部类的引用
什么是内存泄露?Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收;另外,如果一组对象中只包含互相的引用,而没有来自它们外部的引用(例如有两个对象A和B互相持有引用,但没有任何外部对象持有指向A或B的引用),这仍然属于不可到达,...原创 2018-09-19 12:11:44 · 3864 阅读 · 1 评论 -
Android内存泄露之InputMethodManager mNextServedView导致的内存泄露
E/MessageQueue: IdleHandler threw exception java.lang.NullPointerException: Null reference used for synchronization (monitor-enter) at com.syinix.android.b.ca.a(IMMLeaks.java:74)atcom.sy...原创 2018-09-11 11:52:03 · 2344 阅读 · 6 评论 -
Android布局优化之ConstraintLayout
ConstraintLayout是属于Android Studio 2.2的新特性,现在使用As构建默认的Activity,其对应的页面根布局已由RelativeLayout替换成ConstraintLayout,可见官方对其的推荐程度。<?xml version="1.0" encoding="utf-8"?><android.support.constraint.Con...原创 2018-08-30 01:28:04 · 526 阅读 · 0 评论 -
Android布局优化之 ViewStub 、include、merge 使用及源码分析
我们先看一个Activity的页面布局结构: 从上可以看出平常咱们实际绘制的页面布局其实是处在第3层。一、includeinclude标签就是为了解决重复定义相同布局的问题。 例如页面中常用到的标题栏,它几乎是用在所有页面的顶部,在不使用include的情况下咱们需要在每个界面加标题栏的xml代码,显得很繁琐,这时候就会想到封装、复用,include标签就应运而生了,我们只需要...原创 2018-08-30 00:13:27 · 771 阅读 · 0 评论 -
RecyclerView 通用Adapter添加头部、尾部 参考ListView的源码实现(二)
前面一篇RecyclerView 通用Adapter添加头部、尾部 参考ListView的源码实现(一)文章中的实现的RecyclerBaseAdapter是有一些缺陷的,它只适用于头部、尾部ItemViewType类型为仅为一种。 后面稍微改进了一下,允许多ItemViewType,但是需要开发者保证头部View、尾部View、正常View的ItemViewType不重复,实际开发中类型也不会...原创 2018-08-25 19:17:47 · 567 阅读 · 0 评论 -
WebView 打印web端的console日志(如console.log)
在Android Webview中如何打印web端的console日志呢?1.调试Web应用程序 Debugging Web Apps 如果您使用运行Android 4.4或更高版本的设备测试您的网络应用,则可以WebView使用Chrome开发者工具远程调试您的网页,同时继续支持旧版Android。有关更多信息,请参阅Android上的远程调试2.利用WebChromeClient o...原创 2018-08-27 17:45:57 · 23788 阅读 · 0 评论 -
RecyclerView 通用Adapter添加头部、尾部 参考ListView的源码实现(一)
首先我们看下以前的ListView是如何实现addHeaderView、addFooterView 1.先看ListView.setAdapter(ListAdapter adapter) 方法 2.再看addHeaderView、addFooterView方法 以上2个方法中都用到了wrapHeaderListAdapterInternal方法,见下图 现在我们可以看出最终实...原创 2018-08-12 12:21:12 · 2434 阅读 · 0 评论 -
参数名按ASCII码大小排序 冒泡算法实现
上一篇博客签名算法 待签名参数按照字段名的ASCII码大小排序 Android、JS中实现中提到的排序方法实现都是利用系统的api,在这里想用一下底层算法来实现:1.先看系统api实现 String[] data = new String[]{"key", "ba","ba", "ac", "bb","bbc","ccce","ccc"原创 2018-08-12 00:30:32 · 2794 阅读 · 0 评论 -
签名算法 待签名参数按照字段名的ASCII码大小排序 Android、JS中实现
验签是作为一个api接口避免裸奔的必要手段之一,原理就是前后端约定一套签名规则,首先前端在请求api接口时会增加一个sign参数,其值来源是对所提交的参数按照约定的签名规则去生成;接着后端同样会针对其接收到的参数(除sign外)按照约定的签名规则也生成一个sign,然后对2者进行比较,如果不一致则认为此次请求是未非法无效的,不予处理。参考微信公众平台的签名算法:签名生成规则如下:参与签名的字...原创 2018-08-11 22:27:11 · 6097 阅读 · 0 评论 -
优化Webview加载速度 TBS(腾讯浏览服务X5内核) | VasSonic(提升H5首屏加载速度)
浏览增强 传统系统内核(Webview)存在适配成本高、不安全、不稳定、耗流量、速度慢、视频播放差、文件能力差等问题,这是移动应用开发商在进行Hybrid App开发时普遍面临的难题。腾讯浏览服务基于腾讯X5内核解决方案(包括内核和云服务),能够有效解决传统移动web技术面临的普遍问题,同时能极大扩展应用(Hybrid App)内浏览场景的服务能力。 安全 腾讯浏览服务为应用浏览场景提供...原创 2018-08-02 13:23:10 · 5535 阅读 · 0 评论 -
getBackground().setAlpha(0)引发的血案 页面背景变灰色底
开篇先扯下场景哈,大家应该都见过一个很常见的UI交互,默认进一个页面看见顶部TitleBar背景是透明的,随着向上滑动查看底下内容的时候,TitleBar背景逐渐变不透明直至不透明度100%; 为了实现这个效果,我们通常的做法是监听向上滚动的距离,然后跟设定的某个最大滚动距离去求百分比,再把这个得到的不透明度百分比设置给TitleBar的Background。上代码:if (scrollY...原创 2018-07-27 00:22:42 · 1848 阅读 · 1 评论 -
gradle使用技巧(def定义变量 rootProject.ext 添加全局变量)
在主app目录下的build.gradle中我们可以这样写:def packageTime() { return new Date().format("yyyy-MM-dd")}def versionMajor = 1def versionMinor = 1def versionPatch = 0android { compileSdkVersion rootPro...原创 2018-07-19 19:56:03 · 36738 阅读 · 6 评论 -
gradle自动生成BuildConfig类的妙用
说BuildConfig类之前,先谈谈通常会遇到的场景: 1.Log打印日志这个需求,通常大家都会写一个LogUtils工具类,暴露一些常用的log.e log.d log.i等方法, 在方法会用到一个静态常量去作为开关。 2.Api接口地址的变换这个需求,通常都是写一个类里面放上一个静态常量表示Api的地址,然后我们是需要debug模式运行时采用测试环境Api接口地址,在打release包...原创 2018-07-17 20:40:36 · 10855 阅读 · 3 评论 -
build插件升级到gradle3.0+ 多渠道打包applicationVariants、compile语法更换
随着AndroidStudio升级到3.0+,自带的build插件也从2.x升级到3.x时代,有升级就会有调整,下面把遇到的语法改变列出:针对依赖资源库: compile =》 implementation dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.an...原创 2018-07-16 15:36:10 · 16246 阅读 · 0 评论 -
Android 多点触控 RadioGroup + Fragment 实现的底部Tab 能防止用户同时点击多个button而只响应一个有效事件吗?
Android底部导航栏(底部Tab)是一个Android程序员入门必须会实现的一个功能点,在Material Design(基于Android 5.0 API level 21)设计出来之前大家实现底部Tab通常会用FragmentTabHost或RadioGroup方式。而在有了 Android Support Library (com.android.support:design:xx.x...原创 2018-07-02 02:06:54 · 828 阅读 · 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.Platform okhttp3.internal.platform.ConscryptPlatform...原创 2018-06-30 11:35:29 · 8581 阅读 · 0 评论 -
AndroidStudio3.0+ 混淆 Warning:`-keep class *extends java.lang.annotation.Annotation { *; }`
环境:AndroidStuio 3.1.2gradle 插件版本:'com.android.tools.build:gradle:3.1.2'在混淆打包的过程中,日志中出现了红色警告:Warning: The rule `-keep public class *extends java.lang.annotation.Annotation { *; }` uses exten...原创 2018-06-29 15:45:05 · 10399 阅读 · 2 评论 -
Android不集成sdk直接调起原生地图App 路径规划、导航
在我们App开发过程中,经常会有一个优化用户体验的需求:查看某个地址时,给用户提供出路径规划,进行导航。如果本身App不属于LBS应用的话,为了一个小功能点就去集成各大地图SDK,有点杀鸡用牛刀的感觉,增加了apk的体积,得不偿失。那么大家第一个想到的是官方有提供不用集成sdk,就能调起地图App的方式呢?答案是有的:下面给出常用的2大地图SDK商 Api地址:高德地图 https://l...原创 2018-10-15 02:29:22 · 2515 阅读 · 0 评论