自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android保活方案

在开始前,还是给大家简单介绍一下,以前出现过的一些黑科技:大概在6年前Github中出现过一个叫MarsDaemon,这个库通过双进程守护的方式实现保活,一时间风头无两。好景不长,进入 Android 8.0时代之后,这个库就废掉了。最近2年Github上面出来一个Leoric 感兴趣的可以去看一下源码,谁敢用在生产环境呢,也就自己玩玩的才会用吧(不能因为保活而导致手机卡巴斯基),我没有试过这个,我想说的是:黑科技能黑的了一时,能黑的了一世吗?没有规矩,不成方圆,要提升产品的存活率,最终还是要落

2021-09-13 10:02:37 1790

原创 Bitmap 优化策略

如今市场上有很多封装好的第三方库,对Bitmap内存也是做到了很好的优化,比如Glide、Fresco,每次加载只要直接调用就好,但是除掉第三方库外,我们还是需要去了解一下Bitmap的基本优化手段。一、Bitmap内存进程首先我们有必要去了解一下Bitmap的基本知识点,在Android3.0之前,Bitmap的对象是放在Java堆中,而Bitmap的像素是放置在Native内存中,这个时候需要手动的去调用recycle,才能去回收Native内存;在Android3.0到Android7.0

2021-06-24 10:12:04 605

原创 Android安全知识

反编译反编译代码 dex2jar 这个工具用于将dex文件转换成jar文件 jd-gui 这个工具用于将jar文件转换成java代码 ,使用jd-gui工具打开classes-dex2jar.jar这个文件就能查看Java代码 反编译资源 apktool 这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源。 没有反编译资源之前...

2019-12-11 10:14:33 348

原创 Android:梳理自定义View工作流程

目录1. 储备知识1.1 ViewRoot 定义 连接器,对应于ViewRootImpl类 作用 连接WindowManager 和 DecorView 完成View的三大流程: measure、layout、draw 特别注意 // 在主线程中,Activity对象被创建后:// 1. 自动将DecorView添加到Window中 &amp...

2019-07-04 17:34:30 347

转载 android常用开源库

目录前言一 、基本控件二、功能相关三、网络相关四、自定义View五、其他前言收集了一些比较常见的开源库,特此记录(已收录310+)。另外,本文将持续更新,大家有关于Android 优秀的开源,也可以在下面留言。一 、基本控件TextViewHTextView 一款支持TextView文字动画效果的Android组件库。 ScrollNumber 滚动数...

2019-03-12 11:23:50 513 1

原创 Fragment重影(重叠)白屏解决方案

前言绝大部分的app首页架构均为Tab + Fragment,当程序发生异常自动恢复,或者app长时间处于后台恢复后,Fragment出现重影(重叠)等问题。当然部分不顾及页面层级的小伙伴,每个Fragment的view都设置了背景,可能就察觉不出来,但是并不代表没有。然后很多Fragment里面又还有Fragment的使用不当甚至会出现白屏的现象。1 重影(重叠)1.1 触发原因...

2019-01-04 09:32:19 1900 1

原创 Android BLE 蓝牙开发

前言:随着物联网时代的到来,越来越多的智能硬件设备开始流行起来,比如智能手环、心率检测仪、以及各式各样的智能家具和玩具类产品。安卓4.3(API 18)为BLE的核心功能提供平台支持和API,App可以利用它来发现设备、查询服务和读写特性。相比传统的蓝牙,BLE更显著的特点是低功耗。本文主要讲解Android低功耗蓝牙的api使用以及蓝牙扫描、连接、发送数据、接收数据等一系列操作,并主要介绍本...

2018-12-12 09:28:08 694 1

原创 Android 数据交换解析框架Gson使用详解

Json 是一种文本形式的数据交换格式,比 xml 更为轻量。Json 的解析和生成的方式很多,在 Android 平台上最常用的类库有 Gson 和 FastJson 两种,这里要介绍的是 Gson。Gson主页:https://github.com/google/gson一、Gson的基本用法1.1、Gson对象在进行序列化与反序列操作前,需要先实例化一个 com .google.gson.G...

2018-06-04 10:55:23 416

原创 如何使用Data Binding(进阶篇)

一、notifyPropertyChanged方式更新指定数据首先,来简单介绍下Observable:Observable 基于观察者模式更新;它的出现,便是为了解决当我们的实体发生改变时,UI即时刷新。先来一个小例子:假设我们现在有一个User对象,当修改其中一个属性,使其引用的部分更新为修改后的值。那么针对这个需求,我们使用Observable即可分分钟搞定。这里,大家可以简单理解为,这个就是...

2018-05-25 09:43:33 2500

原创 如何使用Data Binding(基础篇)

Data Binding简介Data Binding,出来也有几年了,随着Beta版本到Release版本,直到现在,Data Binding确实为我们带来了很多让人眼前一亮的东西。首先来说,Data Binding是个什么?鉴名其意,数据绑定,是谷歌对MVVM(Model-View-ViewModel)在我们Android上贴心的实现~~~优势效率(性能)高。无侵入式,无反射;节省大量代码,提高...

2018-05-25 09:28:29 7670

原创 Android 弧形ViewPager 和弧形HeaderView

先来看效果:虽然效果还不错,但是有瑕疵,有两个明显的缺陷:底部的圆弧不是正圆弧:如上图所示,弧形有点歪,特别是在小屏幕手机上表现尤为明显,因为是用二阶贝塞尔曲线绘制的圆弧,不管怎么调整控制点,都不会是一个正圆弧,如下图:  圆弧不能设置图片背景:前面的这个版本,弧形背景只能设置颜色,不能设置背景图1. 升级版ArcView实现思路既然有了上面说的2个缺点,我们就要想办法解决它,2个问题我们逐个分析...

2018-04-28 10:01:03 1126

原创 Android-指纹解锁

什么是指纹解锁技术指纹解锁技术原理理解指纹解锁技术的优势和缺点在Android中的应用开发什么是指纹解锁技术根据人的指纹来验证是否能够解锁的技术,类似于通过输入密码来解锁,都是通过一定的数字特征来解锁。指纹解锁技术原理理解首先说明每个人的每个指纹信息都是独一无二的,皮肤纹路在图案,断点,交叉点上各不相同,通过光学感应读出指纹的图片信息也是独一无二的。先保存一个人的指纹特征(图片信息根据算法生成的数...

2018-04-09 09:00:24 463

原创 adb常用命令行

前言ADB是android debug bridge的缩写,负责计算机与Android设备的几乎所有通信和协作,可以认为是连接两者的桥梁。ADB源码点击直达源码:http://androidxref.com/8.0.0_r4/xref/system/core/adb/                          ADB命令分类ADB Debuggingadb devicesadb forwa...

2018-03-26 08:49:28 186

转载 Android 多进程通信

一、Android 中的多进程1、定义首先,进程一般指一个执行单元,在移动设备上就是一个程序或应用,我们在Android中所说的多进程(IPC)一般指一个应用包含多个进程。之所以要使用多进程有两方面原因:某些模块由于特殊的需求要运行在单独的进程;增加应用可用的内存空间。2、开启多进程Android中开启多线程只有一种方法,就是在AndroidManifest.xml中注册Service、Activ...

2018-03-11 10:29:43 1908

原创 android通用Intent

本文将讲解一下隐式Intent:1. 创建闹钟使用ACTION_SET_ALARM操作,还可以带一些extra指定时间和消息等闹铃详细信息。extra: EXTRA_HOUR 闹铃的小时 EXTRA_MINUTES 闹铃的分钟EXTRA_MESSAGE 用于标识闹铃的自定义消息EXTRA_DAYS 对于一次性闹钟,无需指定此extraEXTRA_RINGTO

2018-02-02 15:14:31 289

原创 android之用4行代码快速实现文件下载

简单使用完成一个下载任务只需要4行代码,什么断点续传,大文件下载,通知栏进度显示….都不需要你操心。//创建下载任务,downloadUrl就是下载链接DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadUrl));//指定下载路径

2018-01-25 11:15:39 2635

原创 android用注解代替枚举

前言:使用Support Annotations注解优化代码本片文章讲解怎么使用Support Annotations注解优化代码,比如使用 android特有的魔术变量注解替代Enum 等功能。不要看见使用注解就想到反射会影响性能之类,今天我们就来学习一下Android Support Annotations注解来优化我们的代码,增加可读性的同时,也让让更多的错误消灭在萌芽之中。Support

2017-12-20 09:52:23 1094

原创 runOnUiThread 、Handler.post、View.post之间的区别

先看一下个实例程序:想得到答案,就得知道 runOnUiThread 、Handler.post、View.post 三者的区别。从难易程度来讲,我们先说下 runOnUiThread 和 Handler.post 的区别,先看看 runOnUiThread 的源码:如果当前不是 UI 线程,那么由主线程的 Handler 扔个消息给 MessageQueue;如果当前

2017-12-14 17:06:22 3019

原创 android保持屏幕常亮

日常开发过程中,我们总有时候需要屏幕能够长亮,比如:股票类的app,在查看股票报价页面的时候们往往需要开启盯盘模式,这个时候屏幕是不能黑屏的。关于屏幕长亮功能,找到一个完美的没有兼容性的实现方案:网上有一种解决方案是使用PowerManager来实现屏幕不锁屏:    /**     * 打开休眠锁只能保持手机不休眠     * @param context     */

2017-12-01 09:43:51 1000

原创 android——高效调用系统图库

移动App开发中,常常有本地图片浏览和选择的需求。如果浏览选择使用系统自带的浏览选择组件,那是比较方便的,下面的方法就可以了:(在某Activity内)Intent intent = new Intent();intent.setAction(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(in

2017-11-23 18:01:35 3862

原创 轻松教会你如何使用Git

在日常工作中,经常会用到Git操作。但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼。本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令。一、Git工作流程以上包括一些简单而常用的命令,但是先不关心这些,先来了解下面这4个专有名词。Workspace:工作区Index / Stage:暂存区

2017-09-06 16:33:29 284

原创 RecyclerView配合DiffUtil

一、前言DIffUtils 是 Support-v7:24:2.0 中,更新的工具类。因为已经更新了一段时间了,也不好说是最新更新的。它主要是为了配合 RecyclerView 使用,通过比对新、旧两个数据集的差异,生成旧数据到新数据的最小变动,然后对有变动的数据项,进行局部刷新。接下来就 DiffUtil 的使用细节,进行一个详细的讲解,希望一篇文章就完全理解 DiffUtil。

2017-08-21 10:15:41 439

转载 Android热修复—阿里的新一代热修复技术Sophix

前言热修复作为当下热门的技术,在业界内比较著名的有阿里的AndFix、Dexposed,腾讯QQ空间的超级补丁技术和微信的Tinker。但是我对热修复基本没怎么研究过,由于最近一段时间了解到阿里发布了新一代热修复技术—Sophix。于是我决定折腾一波…一、开通移动热修复服务1、注册阿里云账号,选择移动热修复服务 选择之后需要开通此功能,点击立即开通即可:

2017-08-18 10:21:56 371

原创 android之SpannableString用法

首先在介绍本节内容之前我们来看一个效果:在日常开发过程中,难免碰到这种拼接字符串的方式,要求颜色,背景等不一样,还要求能够点击,那么这种效果是如何实现的呢?1了解SpannableStringSpannableString其实和String一样,都是一种字符串类型,同样TextView也可以直接设置SpannableString作为显示文本,不同的是Span

2017-08-01 11:54:18 724

原创 从数学公式入手,详细了解 Animation 的 Interpolators

我们在做动画的时候,总是避免不了会使用到 Interpolator(插值器)这个东西,比如 LinearInterpolator 等。这样做的好处是,能够让动画的变化速度符合现实世界中的物理规律,看上去更加逼真。比如汽车启动时,速度总是越来越快的。Android SDK 提供有多种插值器供开发人员使用。但很多时候,由于我们的英语水平、数学水平等原因,总是无法直观地区分各种插值器之间的细微区

2017-07-07 09:55:45 719

原创 简单高效的实现Android App全局字体替换

Android O推出了一项新的功能「Fonts in XML」,借助这项功能,我们能够像使用其他资源文件一样使用字体,比较方便地实现App全局字体的替换。为了能够在API 14或者以上的设备上使用Fonts in XML特性,我们需要使用到Support Library 26。更多的内容可以参考「使用Support Library」小节。在Android Studio中按照如下步

2017-06-08 10:11:30 7148

转载 Android高仿QQ及微信底部菜单的多种实现方式【附源码地址】

第一种方式:侧滑菜单+底部导航,已经实现聊天,表情,图片,位置,语音等信息的发送。  看效果:    下载地址:https://github.com/HuTianQi/QQ  第二种方式:Fragment+PopupWindow仿QQ空间最新版底部菜单栏  看效果:    下载地址:https://github.com/YeXiaoChao/

2017-06-08 09:33:01 6595

原创 android四大启动模式

launchMode(启动模式)Activity的任务栈是我们很熟悉的了,它是一种后进先出的结构。位于栈顶的Activity处于焦点状态,当按下back按钮的时候,栈内的Activity会一个一个的出栈,并且调用其onDestory()方法。如果栈内没有Activity,那么系统就会回收这个栈,每个APP默认只有一个栈,以APP的包名来命名.1. standard: 标准模式,每次启动Ac

2017-06-07 14:46:29 462

转载 Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView

SurfaceView, GLSurfaceView, SurfaceTexture以及TextureView是Android当中名字比较绕,关系又比较密切的几个类。本文基于Android 5.0(Lollipop)的代码理一下它们的基本原理,联系与区别。SurfaceView从Android 1.0(API level 1)时就有 。它继承自类View,因此它本质上是一个View

2017-06-07 14:24:13 370

原创 Android卡顿检测方案

应用的流畅度最直接的影响了App的用户体验,轻微的卡顿有时导致用户的界面操作需要等待一两秒钟才能生效,严重的卡顿则导致系统直接弹出ANR的提示窗口,让用户选择要继续等待还是关闭应用。所以,如果想要提升用户体验,就需要尽量避免卡顿的产生,否则用户经历几次类似场景之后,只会动动手指卸载应用,再顺手到应用商店给个差评。关于卡顿的分析方案,已经有以下两种:分析trace文件。通

2017-06-05 09:28:49 752

原创 Android RecyclerView的LayoutManager

摘要:自从RecyclerView推出后,其LayoutManager对布局的灵活控制是让开发者们称赞不已。Google默认为RecyclerView提供了LinearLayoutManager、StaggeredGridLayoutManager、GridLayoutManager,已经可以满足很多开发需求了,但是实际开发过程中,免不了出现一些更加新颖的交互设计。于是,便从Git

2017-03-28 11:27:22 437

原创 Android可伸缩布局-FlexboxLayout(支持RecyclerView集成)

1 . 前言前几天看到Google官方的博客介绍了Google开源的一个强大的布局-FlexboxLayout,作为一个有好奇心的工程狮,当然第一时间就去试了试手,效果非常赞,因此这篇文章就介绍一下它的用法和最新版添加的一些特性(支持集成RecyclerView),Github地址:https://github.com/google/flexbox-layout 。本文目录如下:

2017-03-23 10:22:15 4239

原创 android连接打印机打印

Android用户经常只在自己的设备上查看内容,但有时显示某人的屏幕不是一种充分的方式来共享信息。 您可以从Android应用程式列印资讯,让使用者可以透过应用程式查看更大版本的内容,或与未使用您应用程式的使用者分享。 打印还允许他们创建不依赖于具有设备,足够的电池电量或无线网络连接的信息的快照。在Android 4.4(API级别19)及更高版本中,框架提供了直接从Android应用程序

2017-03-08 11:38:55 42837

原创 Android事件分发

事件分发是Android中非常重要的机制,是用户与界面交互的基础。这篇文章将通过示例打印出的Log,绘制出事件分发的流程图,让大家更容易的去理解Android的事件分发机制。一、必要的基础知识1、相关方法Android中与事件分发相关的方法主要包括dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent三个方法,而事件分发一

2017-02-15 11:05:46 200

原创 深入浅出Android Support Annotations

在Android Support Library19.1版本中,Android工具小组引入了几个很酷的注解类型,供开发者在工程中使用。Support Library自身也使用这些注解,这是一个好兆头。就让我们好好研究下。 通过gradle可以很容易的把这些注解添加到我们的工程中:compile 'com.android.support:support-annotations:25.0.0'

2017-02-14 14:21:15 173

原创 Android热修复-微信Tinker

写在前面正常情况下一旦线上版本出BUG时,这时候得改BUG,重新发布上线,用户重新下载安装,成本未免有点高;基于这种情况下很多热修复框架孕育而生,比较火的有:Andfix、HotFix等;本文旨在帮助没接触过Tinker的童鞋快速集成使用热修复;本文环境官方地址SdkVersion 24gradle:2.2.0Tinker版本 1.7.5集成Tinker

2017-02-13 13:52:09 454

原创 神兵利器-Android性能调优工具Hugo

在进行Android性能调优、减少应用卡顿时,寻找可优化的code是一个必要的过程。如何发现应用中的耗时任务甚至是耗时函数呢,如果可以在log中打印每个方法的执行时间,甚至把执行方法时的输入输出同时打印,绝对是非常棒的功能。幸运的是jake Wharton大神已经做出了这样的工具:Hugo。Hugo可以做什么Hugo可以打印一个方法的输入参数和函数的运行时间:

2017-02-10 16:48:27 2538

原创 Android 混淆从入门到精通

简介作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读。混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解。本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则。说在前面这里我们直接用

2017-02-10 15:32:06 192

原创 Android开发人员应避免的10个误区

不少andorid开发新手容易犯的错误:1、不读Android开发文档Android开发者网站可以很好的帮助你。很多的文档也可以通过SDK工具下载。这些文档不仅仅是Javadoc API的参考,它包括许多指南、教程、视频、培训以及其他有用的资料来创建Android应用程序。Android训练,通过一些有用的教程示例,指导你解决特定问题或实现特定的功能。2

2017-02-10 11:07:44 180

原创 Android应用瘦身

开篇语在我们日常开发过程中,项目稍微大点的话apk就会好大,那么apk是不是越大越好呢,然而并不是的。今天就为大家讲解怎么让自己的apk瘦身瘦身的目的从目的导向来看,我们是不会无缘无故去做一件事情的,那我们对应用瘦身的目的是为了什么?答案是:提高下载转化率。什么是下载转化率?举个栗子:你的应用大小是 18MB ,有100个潜在用户想要去下

2017-02-09 09:48:10 2978

android下拉刷新

android最新版下拉刷新,界面美观,代码更加的简单,理解更容易

2015-06-15

获取短信验证码

包含倒计时短信验证,最后通过短信的方式发送给你,最后你可以将收取到的短信输入就可以

2015-06-15

空空如也

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

TA关注的人

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