自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 Android TextView ClickSpan与onClick事件冲突问题

0 本章内容TextView自定义Span实现 多Span融合 点击事件冲突处理方法1 TextView自定义Span实现1.1 产品需求产品要求实现一个类似于下图的功能其中红框部分需要实现点击,且左右有Padding。并且整体的文本需要有点击事件 和 长按事件,蓝字处要实现另一个点击事件1.2 Android中的Span这个不再赘述了,Android内本身支...

2018-11-07 11:52:16 2612 1

原创 Bitmap内存占用及华为机型长图加载问题

部分内容转载自:https://www.jianshu.com/p/0fbcadfd4213?winzoom=1https://zhuanlan.zhihu.com/p/20732309?refer=bennyhuo0 本章内容一个Bitmap对象占多大内存空间 解决大图加载OOM的几种方式 华为mate10等机型长图加载失败问题1 一个Bitmap对象占多大内存空间1....

2018-09-22 18:03:45 843

原创 Android Palette吸色原理及源码解析

一、Android Palette原理:    需求来自于设计想搞一个吸色的背景,就想到了Palette。    1、RGB和HSL    一般的3D编程只需要使用RGB颜色空间就好了,但其实美术人员更多的是使用HSV(HSL),因为可以方便的调整饱和度和亮度。HSL 和 HSV(也叫做 HSB)是对RGB 色彩空间中点的两种有关系的表示,它们尝试描述比 RGB 更准确的感知颜色联系,并仍保持在计...

2018-07-08 19:53:30 2959

原创 Instant Run 源码解析 二 (最新版)

一:前言:背景:Google对Instant Run一直有着持续的升级,部分前辈们介绍的东西发生了变化,故更新一下部分源码级别的分析。    参考:https://yq.aliyun.com/articles/202917             https://www.jianshu.com/p/5947855e3362    改动综述:    1、早期的InstantRun实现是修改本身App...

2018-03-19 23:45:20 779

原创 Android、H5 单独调起拍照与摄像

一:    公司代码需求,要求用户在H5内上传视频的时候必须是刚拍摄的。这就需要我们在调起相机的时候只调起拍摄,并且不能有BROWSER出现。    1、单独调起拍照:    // 激活系统的照相机进行拍照 Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); intent...

2018-03-19 23:19:07 2816

转载 Android InstantRun 工作原理(一)

一:Instant Run    Instant Run,是android studio2.0新增的一个运行机制,在你编码开发、测试或debug的时候,它都能显著减少你对当前应用的构建和部署的时间。当我们第一次点击run、debug按钮的时候,它运行时间和我们往常一样。但是接下去的时间里,你每次修改代码后点击run、debug按钮,对应的改变将迅速的部署到你正在运行的程序上,传说速度快到你都来不及...

2018-03-12 23:12:39 842

转载 Android Matrix 超级详解

以下转自:    http://www.gcssloop.com/customview/Matrix_Method    http://www.gcssloop.com/customview/Matrix_Basic这应该是目前最详细的一篇讲解Matrix的中文文章了,在上一篇文章Matrix原理中,我们对Matrix做了一个简单的了解,偏向理论,在本文中则会详细的讲解Matrix的具体用法,以及...

2018-02-26 22:40:40 9428 2

原创 Android Canvas+Paint 画图

一、Path相关讲解主要讲下android里的Path(封装了贝塞尔曲线)& Canvas里的drawPath(path,paint);很多人听到贝塞尔曲线,就觉得似乎挺高端大气上档次,后面会和大家一起揭开它的面纱,一睹真容;Path(路径):我们先看看Path类里有哪些方法咱们从上往下看:构造函数有两个,分别是[html] view plain copy/**   * Create an...

2018-02-26 22:38:20 1292

原创 android path + fillType

Path作为Android中一种相对复杂的绘图方式,官方文档中的有些解释并不是很好理解,这里作一个相对全面一些的总结,供日后查看,也分享给大家,共同进步。1.基本绘图方法addArc(RectF oval, float startAngle, float sweepAngle)绘制弧线,配合Paint的Style可以实现不同的填充效果addCircle(float x, float y, floa...

2018-02-20 11:56:48 1146

转载 Android 知识图谱

转自:http://blog.csdn.net/xyz_lmn/article/details/41411355

2018-01-31 11:56:20 168

原创 Gradle failed: module: XXX already disposed

大多是因为AS或者是代码的原因,导致下载的jar包版本不同 或  缓存有冲突解决方法:1、./gradlew clean2、重启android Studio 3、File -> Invalidate Caches/Restart,重启后再clean Project(有时不用clean)就行了

2018-01-09 12:05:11 1276

转载 Android上透明状态栏,全屏显示以及沉浸模式

在Android上为了实现全屏显示,透明状态栏,沉浸模式等效果,往往需要我们掌握和系统UI显示隐藏相关的各种Flag。Android上API版本混乱,各种Flag林立。今天我们就来聊聊这些Flags。在Android Kitkat中引入Immersive Mode相关

2018-01-02 20:16:30 435

转载 Android软键盘(七)键盘显示的状态下,onKeyDown方法无法监听到back事件

事情越来越有意思了,随着深入的了解,以及在实际开发中的需求,难免会发现这样的问题。当键盘在显示的时候,在OnKeyDown方法里面竟然无法监听到back按钮事件。这对要在按back键之后做一些业务逻辑的童鞋真是心中一万头草泥马的飘过~~~~~~今天来总结一下如何解决这个问题。看效果图:我们说了,在键盘显示的时候,在onKeyDown方法根本监听不到任何事件回

2018-01-02 20:08:27 966 1

原创 Android:ApplicationContext 与 非Context 在区别图

这是因为standard模式的Activity默认会进入启动它的Activity所属的任务栈中,但是由于非Activity类型的Context,如ApplicationContext并没有所谓的任务栈,所以这就会出现问题,解决问题的方法使给intent设置上一个标记位

2017-12-06 14:25:13 250

转载 android 控件布局(顶部、底部......) 留着自己用

android 控件布局(顶部、底部......) 留着自己用android:layout_above 将该控件的底部至于给定ID的控件之上android:layout_below 将该控件的顶部至于给定ID的控件之下android:layout_toLeftOf 将该控件的右边缘和给定ID的控件的左边缘对齐android:layout_toRightOf 将该控件

2017-11-27 23:42:02 1180

转载 Android设置透明、半透明等效果

设置透明效果 大概有三种1、用android系统的透明效果Java代码 android:background="@android:color/transparent" 例如 设置按钮Java代码    android:text="@+id/Button01"     android:id="@+id/Button01"     and

2017-11-27 23:00:04 411

原创 Android 手机跳转到权限管理界面汇总

概述最近项目中遇到这样个需求场景:当我们的用户使用App时不小心拒绝了某项必要权限,而导致无法正常使用。这时候希望重新去打开该权限,那么问题来了,Android厂家定制的room五花八门,很多时候却发现找不到权限管理的入口。为了解决这一问题,如果我们应用中直接提供权限管理入口给用户,是不是会很方便的解决用户这一困扰呢?经过一番研究,整理出了大部分国产手机直接打开权限管理界面的方法:

2017-11-27 22:56:48 10053 2

原创 Android ClassLoader与JAVA ClassLoader详解及对比

一、什么是ClassLoader?         大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会...

2017-11-16 15:02:28 742

转载 JAVA 动态代理通俗解析

引入本篇文章主要介绍一下动态代理在 Java 和 Android 中的应用。了解动态代理之前,你需要知道什么是代理以及什么是静态代理。由于篇幅所限,本文就不介绍这些了。你可以点击这里查看或者知乎上的讨论,你也可以自行 Google 一下。另外文中的两个实例 Demo 你可以在这里取到。一. 概念介绍动态代理是 Java 一大特性。它的显著优势就是无侵入式的扩展代码。通俗来讲就是可以用来做方法的增强...

2017-11-14 20:10:54 715

原创 HTTP 请求头各字段含义

Accept这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值 image/png 或 image/jpeg 是最常见的两种可能值。Accept-Charset这个头信息指定浏览器可以用来显示信息的字符集。例如 ISO-8859-1。Accept-Encoding这个头信息指定浏览器知道如何处理的编码类型。值 gzip 或 com

2017-11-14 10:09:27 1311

转载 Android Lottie 使用以及源码解析

Airbnb在GitHub上面开源了一个项目lottie-android,最近火的不要不要的,牢牢占据Trending排行榜(日、周、月)首位,下面我们就见识一下这个项目。 首先放上Lottie在GitHub上面的项目地址:Android,iOS, 和React Native。Lottie简介Lottie是一个为Android和IOS设备提供的一个开源框架,它能够解析通过A

2017-11-13 22:15:04 810

原创 多线程下单例模式终极奥义

1、单例模式的惰性加载通常当我们设计一个单例类的时候,会在类的内部构造这个类(通过构造函数,或者在定义处直接创建),并对外提供一个static getInstance方法提供获取该单例对象的途径。例如:public class Singleton { private static Singleton instance = new Singleto

2017-11-11 10:34:52 343

原创 java.util.ConcurrentModificationException 与集合删除

今天同事写了几行类似这样的代码:123456789101112public static void main(String args[]) {    List famous = new ArrayList();    famous.ad

2017-11-06 20:40:19 263

转载 Android 7.1 以上机型Charles抓包解决办法

Android7.0 和 Charles 的抓包关于android手机在mac版charles上抓不到包这个问题困扰了很久,查阅了很多资料,发现是android7.0系统安全策略问题。官方传送门:https://developer.android.google.cn/training/articles/security-config.html#manifestCharles

2017-11-06 16:05:11 20621 2

转载 Android resources.arsc文件与资源防护

http://blog.csdn.net/beyond702/article/details/51744082一、前言对于APK里面的Resources.arsc文件大家应该都知道是干什么的(不知道的请看我的另一篇文章Android应用程序资源文件的编译和打包原理),它实际上就是App的资源索引表。下面我会结合实例对它的格式做一下剖析,读完这篇文章应该能够知道Resources.a

2017-10-31 20:23:16 805

原创 java.util.concurrent.TimeoutException: android.view.ThreadedRenderer.finalize() timed out after 10 s

是因为5.0上webView启动硬件加速,可能导致的bug.   stackOverFlow查询如下:32down votefavorite12I am getting this strange crash reports on Lollipop. My app is basically a browser so it m

2017-10-31 20:03:25 3425 2

转载 从一个git仓库提交代码到另一个git仓库

转自:https://segmentfault.com/a/1190000004326399在实际的开发中,有可能遇到需要将A仓库的某个branch的代码独立成为一个新的仓库B。我们需要的不仅仅是这个branch的最新提交的代码,而是需要它的整个提交历史。这种需求对于git来说非常简单,主要依靠git remote命令来实现。把当前代码提交到另一个远程git仓库假如仓库

2017-10-31 20:01:30 13095 1

原创 android.view.WindowManager$BadTokenException崩溃分类与解决。

1.Unable to add window --token null is not valid; is your activity running2.Unable to add window --token null is not for an application3.Unable to add window -- token android.os.BinderProxy@XXX is not...

2017-10-30 12:21:52 22947 3

原创 内存检测工具LeakCanary原理解析

一.配置在build.gradle中可以进行配置://leakcanary debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1' patchCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' releaseCom

2017-10-17 14:45:39 476

原创 android 7.1.1下android.permission.SYSTEM_ALERT_WINDOW改动及BUG

参考文章:1、http://chen-wei.me/2016/11/10/android-permission-best-practice/2、http://blog.csdn.net/lmj623565791/article/details/507096633、http://www.jianshu.com/p/bd8a114b4c39前提介绍:悬浮窗权限Tips:使用

2017-10-16 20:12:31 3119

原创 Android修改状态栏颜色详解

d参考文章:http://www.jianshu.com/p/932568ed31af默认情况下,状态栏的颜色是黑色的。同时状态栏颜色也可以半透明或是指定任意一种颜色。实现图分别如下黑色:自主设定颜色半透明一:如何为状态栏设置颜色?在实现上主要分两种,5.0以上机型、4.4-5.0版本机型。4.4-5.0还没有API可以直接修

2017-10-15 22:18:36 470

转载 JDK 9.0 新特性

转自:http://www.jianshu.com/p/b133abd54d27在本章,主要介绍以下内容:新的JDK版本控制方案是什么如何使用Runtime.Version类解析JDK版本字符串JDK JRE 9的新目录布局是什么JDK 9中的批注的标准覆盖机制如何工作的在JDK 9中使用扩展机制的变化JDK 9中的类加载器如何工作以及模块的加载方式资源

2017-09-24 22:35:51 3634

转载 使用 Githook 实现团队 Coding Review 流程

转自:http://www.jianshu.com/p/935409ce4c9aCode Review中文译作“代码审查”或是“代码评审”,是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法。通过Code Review可以审查代码的风格、逻辑、思路……,找出问题,以及改进代码。而且这是代码刚刚出炉的时候,所以,这也是代码

2017-09-21 14:34:05 859

原创 Fragment 的getUserVisibleHint()与setUserVisibleHint()

Android应用开发过程中,ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时若加载的内容较多,就可能导致整个应用启动速度缓慢,影响用户体验。为了提高用户体验,我们会使用一些懒加载方案,实现加载延迟。这时我们会用到getUserVisibleHint()与setUserVisibleHint()这两个方法在传统的frag

2017-09-20 20:33:57 3537 1

转载 Android 开发中的 uid pid tid

pid 是process进程id , uid 是user 用户id;如果你是root,那么你的uid就是0,0为最高权限;可以通过pid找到这个进程的uid,没有试过通过Uid找到所有Pid,大家可以试一下;每一个不同的程序都能有一个UId,但是一个应用里面可以有多个PId;一个用户可以打开多个进程(Pid),并且这些进程的uid是一样的;一个pid对应一个进程,每次打

2017-09-11 16:20:44 763

原创 android proguard.cfg 文件常用配置

#混淆时不产生形形色色的类名-dontusemixedcaseclassnames##不跳过(混淆) jars中的 非public classes-dontskipnonpubliclibraryclasses#打印日志-verbose#不预校验,默认情况下如果类文件的目标平台Java 6 或更高时会进行预校验。Android没必要开启,关闭可减少处理时间。-dontpreveri

2017-09-06 10:33:23 486

转载 Android客户端Push 透传与通知栏

目前的消息推送方式主要有两种:通知和透传。什么是透传?透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理。透传消息,就是消息体格式及内容,对于传递的通道来说是不去过问的,通道只负责消息的传递,对消息不做任何处理,当客户端接收到透传消息后,由客户端自己来决定如何处理消息。正是因为透传消息可以自定义消息体,也

2017-08-29 11:49:16 4934

原创 [转]AES加密算法及java代码实现

转自:http://www.cnblogs.com/block2016/p/5596676.htmlAES加密AES是一个对称密码,旨在取代DES成为广泛使用的标准。一、AES的加密过程 二、AES的数据结构加密解密算法的输入是一个128位分组。这些分组被描述成4×4的字节方阵,这个分组被复制到state数组中,并在加密和解密的每一阶段都被修改。在字节方阵中

2017-08-22 14:59:50 5900

转载 [转]Base64加密原理及代码实现

Base64是一种加料置位加密法,那为什么叫base64呢?因为无论明文是什么(比如汉字,特殊符号等),加密后的密文都只会变成字母A-Z、a-z和0-9 和+和/这64个字符,被他加密体后积一般会变成原来的4/3。Base64的标准在RFC2045里的24页可以看到。http://wenku.baidu.com/view/bd567523aaea998fcc220e8e.html

2017-08-22 14:58:31 368

转载 TLS 握手优化详解

转载自:https://imququ.com/post/optimize-tls-handshake.htmlTLS 握手在传输应用数据之前,客户端必须与服务端协商密钥、加密算法等信息,服务端还要把自己的证书发给客户端表明其身份,这些环节构成 TLS 握手过程,如下图所示:可以看到,假设服务端和客户端之间单次传输耗时 28ms,那么客户端需要等到 168

2017-08-18 14:18:12 1118

空空如也

空空如也

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

TA关注的人

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