![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
粤语伶仃
追求梦想,追逐技术高峰
展开
-
Rxjava + Retrofit的网络封装
具体的知识点可以看看这篇博客:https://blog.csdn.net/qq_37173653/article/details/789240101,封装retrofit:public class RemoteRepository { public static final int SECCESS_CODE = 1; private static RemoteReposi...原创 2018-08-23 16:24:44 · 232 阅读 · 0 评论 -
华为手机7.0以上华为7.0上popwindow位置显示错乱,飘
由于测试手机上华为meta8,升级了7.0以后突然popwindows显示位置往上飘了, 其他机型没啥问题,一直没找到原因?后来看到一个连接?https://code.google.com/p/android/issues/detail?id=221001原来是 in showAtLocation failed to no gravity 在7.0上没有工作解决方法是: if (android.原创 2017-04-21 16:15:34 · 4415 阅读 · 0 评论 -
列表式弹窗
private void showTakePictureDialog(String[] strs) { SingleListDialog listDialog = new SingleListDialog(activity); listDialog.setTitleVisible(false); listDialog.setListEntries(st原创 2017-05-11 16:20:43 · 325 阅读 · 0 评论 -
支持富文本插入图片,文本的自定义View
在比较潮流的App中,我们经常看到富文本的身影,能支持图文混排,其实图文混排不是那么难,这段时间由于项目的需要,我自己实现了图文混排,即能支持插入图排,又可以编辑文本。其实原理很简单,把ImageView跟EditText动态加入一个layout容器里面,然后根据最近的焦点来添加view,具体请看我的view,里面已经注释很清楚了。public class RichTextView extends原创 2017-04-17 18:14:01 · 1450 阅读 · 0 评论 -
Android 常用的时间工具类
Android 常用的一些工具类1.时间对象转换成字符串public static String date2string(Date date) { String strDate = ""; SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS); strDate = sdf.fo原创 2017-04-17 15:46:57 · 437 阅读 · 0 评论 -
Dagger2从使用到原理剖析
有没有像我这种从系统转应用的开发,做系统几乎都不需要跟框架打交道,但是呢,做应用,那这些开源框架就不得不天天见面了。我相信很多都会跟我一样,网上很多Dagger2的文章,但是都云里雾里,似懂非懂,所以我决定再忙都要把我的学习过程分享给大家,血泪总结啊! 对于Dagger2,我觉得最好先弄懂依赖注解是什么个意思,然后再来看看Dagger2,它跟ButterKnife还是有一定的区别的。注解并不是我要原创 2016-12-30 17:53:39 · 1401 阅读 · 0 评论 -
从源码上剖析AsyncTask
一、AsyncTask基本介绍一般情况下,Android只能在主线程中更新UI,子线程要更新UI,就需要借助Android的异步消息处理机制。不过为了更加方便我们在子线程中更新UI元素,Android从1.5版本就引入了一个AsyncTask类,使用它就可以非常灵活方便地从子线程切换到UI线程。二、AsyncTask的基本用法首先来看一下AsyncTask的基本用法,由于AsyncTask是一个抽象原创 2016-11-26 13:16:11 · 302 阅读 · 0 评论 -
悬浮按钮FloatingActionButton控件
相信作为Android开发者,对FloatingActionButton肯定很熟悉,我们也经常看到它的身影,比如短信页面,电话页面等等。那么我们应该怎么引用悬浮按钮呢?下面就来分析分析FloatingActionButton的使用。1.先导入support依赖库由于FloatingActionButton是在开源库里面的,所以我们要先导入开源库。 (1)先配置build.gradlegradle版原创 2016-11-22 16:59:57 · 3986 阅读 · 0 评论 -
异常信息接收器CrashWoodpecker
在写APP应用的时候经常会遇到某个Activity出问题而导致APP崩溃,而Android Studio 自带的 logcat 并没有搜集到异常信息,特别是对于那种 “启动崩” 的异常, 很难马上捕捉到, 丢失也是经常的。当开发过程中, 如果有没有处理的异常导致 crash, 使用了 CrashWoodpecker 以后, 便会起一个新的美观页面, 以很友好的方式即时展示异常信息。这对于查看错误信息翻译 2016-11-22 16:00:18 · 908 阅读 · 0 评论 -
从源码上剖析Android内存泄露工具LeakCanary
内存泄露在开发过程中我们会经常遇到,分析内存泄露的工具经常会用到Heap Tool 与 Memory Analyzer tool(MAT)。Heap Tool可以查看当前的内存快照,从数据里可以看到当前内存的占用和回收情况,每次垃圾回收这里的数据都会更新,因为会不断获取内存数据刷新显示,所以这时候对应用操作会出现卡顿。 Heap Tool提供的是一个内存的总体情况,图表显示的内容比较简单,如果要具体原创 2016-11-21 18:05:04 · 1405 阅读 · 0 评论 -
浅谈Android中的json解析
引言 对于一个App开发的Android 开发者而言,json解析算是家常便饭吧,json可以说整个app的地基,时刻都在支撑着我们的app的各种交互。那么,json在Android应用中到底是什么,扮演着怎么样的角色,下面就跟着我一起去揭开json的神秘面纱吧。## 一,json是神马东东 ## json其实就是一种轻量级的文本数据交换格式,是JavaScript Object Notat原创 2017-05-15 17:08:40 · 577 阅读 · 0 评论 -
Android调试应用命令式技巧
在应用开发中,我们常常会进行日志打印或者debug调试,以此来分析运行时的一些信息,便于发现bug和问题。Android Studio的Debug功能很好用,但是有时候有些情况下,就显得不是那么快捷和便利。 比如:我们调试的点在应用一打开的时候,很靠前,例如Application的onCreate方法中,以至于我们不能足够快的设置进程为debug模式虽然上面的情况可以通过Android Stu原创 2017-05-15 17:39:10 · 392 阅读 · 0 评论 -
Android Studio 3.0及Gradle Plugin 3.0升级过程中踩到的那些坑
前言: 2018转眼已经过去一快小半年,堕落了很长一段时间,觉得回到家乡小地方,没有了追求技术的热情。直到前段时间跟以前的同事聊的过程中发现自己已经脱离正轨了。虽然不再北上广深了,但是技术还是得靠自己去折腾。也许有一天回过头来看看,自己曾经那么爱android是吧。哈哈。废话不多扯了,直接进入今天要给大家带来的唠嗑。正题:大家都知道Android已经到android8了,开发工具也持续更新到An...原创 2018-04-28 16:32:48 · 920 阅读 · 0 评论 -
Android 签名大解
前言: 开发一个android项目,签名是必须需要学会的,好在android studio 已经强大到你只需选择几下就可以搞定签名文件,接下来我总结一下大体的签名步骤吧!(图片是共享同仁的图片,哈哈哈,别像我这么懒)1.keystore.jks文件生成,打包APK选择Build > Generate Signed APK 出现如下弹框:然后点击Create new...(创建的意思)出现...原创 2018-05-02 11:20:47 · 456 阅读 · 0 评论 -
比较两个list集合是否相等
方法: 1,先比较size是否相等 2,在size相等的基础上在逐个比较元素 public synchronized <T extends Comparable<T>> boolean compare(List<T> a, List<T> b) { if (a.size() != b.size()) return false;// Co原创 2017-10-24 11:52:01 · 4677 阅读 · 1 评论 -
从源码角度来剖析Rxjava的运行原理
引言相信网上关于Rxjava的文章数不胜数,但是我不知道初学者有没有跟我一样觉得好迷茫,似懂非懂的样子真的很让人崩溃,对于我而言,要学一个东西,我就要真真正正把它给学会,学懂,所以我一定要弄懂RxJava是怎样运行的,只有弄懂它是怎样跑起来的,咱们后面才知道怎么写代码,怎么用好它,so,在这里我并不是告诉你怎么去用Rxjava,因为我也是刚学,但是我决定一步步来,把每天的学习记录下来。这里先讲的是R原创 2017-07-21 17:35:41 · 805 阅读 · 0 评论 -
深入浅出剖析MVP架构模式
引言MVP模式在Android开发领域上据说有着举足轻重的地位,其热度持续发烧,有增无减。作为一名android搬运工,对于mvp架构,我曾经也是一头雾水,这几天才认认真真学习了一把,所以决定把自己所学到的知识整理出来,希望对跟我一样之前不是很懂MVP架构的伙计有一点帮助。相信很多码农都有这样子的习惯,不喜欢看理论,一来就奔代码去,我在这之前也是这样子的,但是有位前辈指导我,要先了解一些架构的思想再原创 2017-07-03 22:43:31 · 832 阅读 · 0 评论 -
Android “+”号发散菜单动画的实现--- pathMenu的实现思路
一,引言最近有需求,需要开发类似淘宝“问大家”进去中间那个“+”号Tab,点击散发出两个菜单按钮的动画,大概效果如下: 然后点击“+”做发散动画,效果大概如下 对于这样子的动效是很多主流app都在做的,那么我们应该怎么做呢?二,那么怎么实现这个动画呢下面让我来讲讲要怎么实现这样子的pathMenu动画 先借助前辈的一张图来讲讲扇形原理: 这款扇形菜单实现的也是非常的好,提供半径 radi原创 2017-06-21 11:31:40 · 1522 阅读 · 3 评论 -
从源码角度上探索AdapterViewFlipper怎么实现广告栏的垂直自动滚动
一,从源码上认识AdapterViewFlipper 我不知道大家有没有跟我一样,看到别人的app一些比较好的交互时,总是好奇别人是怎么实现的,如果是换做自己,我哦该怎么实现。最近在做一个横向轮播的视频展示需求,我们知道viewpager是可以很容易实现横向滚动的,那么很多app上的一些广告栏是垂直滚动的,比如京东,淘宝,一些招聘的app都有。那么别人是在怎么实现的呢。方式有很多中,如果只是简原创 2017-06-28 16:33:12 · 803 阅读 · 0 评论 -
Activity之onActivityResult与setResult
在Android app开发当中,我们经常会遇到几个activity之间的跳转问题,比如A跳转到B,然后B跳转到C,然后点击C的某一项要回到A,这就存在各种数据传值的问题,今天我们就来掰扯这些activity之间的爱恨情仇。一、方法简介android Activity之间的跳转不只是有startActivity(Intent i)的,startActivityForResult(Intent int原创 2017-06-07 11:53:07 · 1526 阅读 · 0 评论 -
标签栏TabLayout与ViewPager的那些事
一,引言上图是简书Android端的主页Tab,在其他的App中Tab也是很常见的,它的实现方式也有很多:TabHost,自定义控件(第三方库),RadioGroup等等。这里主要介绍Android Design库中的TabLayout的使用。TabLayout和ViewPager配合使用是最常见的运用方式,比如上图所示,接下来我们一一攻破!二,TabLayout的属性介绍我在这里就不那么废话的跟大原创 2017-05-26 16:54:53 · 2220 阅读 · 0 评论 -
盲人辅助模式Accessibility剖析
现在很多的App都有考虑到要适配一些特殊人群,不如盲人,对于盲人模式这个辅助功能的适配,参考Google官方文档:http://developer.android.com/intl/zh-cn/guide/topics/ui/accessibility/apps.html ,下面是我在研究盲人模式开发中的一些总结,希望对有需要的人能够起到一定的帮助作用。一、常见的需求场景1、描述用户界面控件:为没有原创 2016-11-22 15:08:57 · 8485 阅读 · 0 评论 -
Mutildex解决Android应用Dex方法数限制
作为一个Android开发者,在开发应用时,随着业务规模发展到一定程度,不断地加入新功能,添加新的类库,代码在急剧的膨胀,相应的APK包的大小也在相应地增加。那么可能有一天,你的应用会抛出这样一个error信息:Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xffff]: 65536这原创 2016-11-22 10:35:10 · 2301 阅读 · 0 评论 -
Android 视图渲染过程的源码分析
我相信大部分Android开发工程师都知道通过 setContentView(@LayoutRes int layoutResID)就可以把自己layout布局文件的视图结构显示出来。但是鲜有人去研究Android系统是怎么把这些视图给渲染显示出来的。由于工作的需要,我尝试过很多次去研究,去探索。但不可否认这个过程很痛苦,很头疼。看FrameWork层源码无疑是最头疼的,但是没办法,这是工作的重中之原创 2016-10-21 17:57:29 · 1793 阅读 · 0 评论 -
WindowManagerService如何管理应用程序窗口
一、引言如果对于Android窗口视图是怎么显示的还不是很清楚的话,可以看看我上一篇博文Android视图渲染过程分析,我们已经知道每一个Activity组件都有一个对应的ViewRoot对象、View对象以及WindowManager.LayoutParams对象。这三个对象的对应关系是由WindowManagerImpl类来维护的。具体来说,就是由WindowManagerImpl类的成员变量m原创 2016-10-24 11:31:16 · 759 阅读 · 0 评论 -
Android启动Activity的方式原理分析
一.启动 Activity 的分类 在android 种启动4大组件的方式有很多种,但是不管再多,都从调用方式上分为以下2种: 1、显示调用(Intent显示跳转) 显式调用明确指定了调用的组件名称,对于显式调用的Intent,称之为“显式Intent”,如下面的例子: (1)同一个应用程序中的Activity切换 Intent intent =原创 2016-10-21 16:10:26 · 702 阅读 · 0 评论 -
ViewPager的PageTransformer 实现各种Page变换动画效果分析
一,PageTransformer 的简单介绍 从Android 3.0开始,ViewPager提供了PageTransformer接口来帮助应用方便实现各种切换效果,该接口是在ViewPager滑动的时候被调用的,下面是其定义:/** * A PageTransformer is invoked whenever a visible/attached page is scroll原创 2016-09-19 21:06:21 · 2841 阅读 · 0 评论 -
ViewPager原理分析
前言: 在Android开发的世界里面,ViewPager在我们的APP中穿梭,我想只要有点Android开发经验的程序猿都知道ViewPager,也知道简单的使用方法。但我想ViewPager的源码估计大家都不怎么想去分析,其实我觉得当你从源码上真正分析过一个控件,那么不管它怎么变,你都能使用自如,并且就算在使用的过程中遇到一些问题,你都能应付得过来。我一直都想把自己在工作中分析原创 2016-09-19 20:46:30 · 2002 阅读 · 0 评论 -
Android Touch事件传递原理分析
一、Touch事件分析 1.Touch事件类型 Touch事件被封装成MotionEvent,用户当前的touch事件主要类型有: ACTION_DOWN: 表示用户开始触摸 ACTION_MOVE: 表示用户在移动(手指或者其他) ACTION_UP:表示用户抬起了手指 ACTION_CANCEL:表示手势被取消了 ACTION_OUTSIDE: 表示用户触碰超原创 2016-09-18 20:15:20 · 1346 阅读 · 0 评论 -
从源码角度分析Android 事件传递流程
自从开始负责公共控件模块开始,我一直都想好好分析一下Android事件传递流程,相信网上有一大堆相关文章,但是我个人觉得作为一个专业的控件开发人员,如果只是知道一下大概,而不知其所以然,则不算一个合格的公共控件人员,感谢我曾经一位同事,在我刚开始接触控件的时候带着我,很耐心的教会我控件的内在,下面我个人从源码角度来分析Android事件传递流程,基于Android5.0的代码,如果有错误的地方,还望原创 2016-09-18 20:58:46 · 950 阅读 · 0 评论 -
SharedPerefrence源码分析
前言:SharedPreferences是android中用于持久化数据的方式之一,它以key-value的方式组织数据,最后以xml文件的方式保存在/data/data/<package name>/shared_prefs/目录下。SharedPreferences以key-value方式保存数据,key的类型为String,value支持的类型有:boolean,float,int,lo原创 2016-09-18 19:32:24 · 565 阅读 · 0 评论 -
Android自定义view的一般步骤
Android原生已经提供了一系列控件,如TextView,EditText等,但是这些往往不能满足应用开发需求。当现有的控件满足开发需求的时候,就需要按照自己的需求自定义控件。自定义控件主要有以下几点:1.继承自View或某个widget 2.定义属性及style 3.应用属性 4.定义属性事件方法 5.View的测量、布局及绘制 6.控件优化 7.其他细节问题原创 2016-04-09 22:07:50 · 648 阅读 · 0 评论 -
Android WebView探索
一、引言WebView(网络视图)作用相当于一个迷你的浏览器,采用Webkit内核,因此完美支持html,javascript,css等。有时候,我们完 全可以把UI甚至数据处理都交给WebView,配合PHP等服务端程序,这样Android开发就变成了网页开发,可以省很多精力。目前很多android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出原创 2016-10-24 14:56:22 · 342 阅读 · 0 评论 -
从源码上深度剖析View invalidate 、 postInvalidate、requestLayout
对于Android View的自定义来说,这三兄弟简直是我们必须要拿下的坎,那么这三个方法有什么本质上的区别呢? 我个人认为要从本质上来认识这三者的区别,那么你肯定要对Android View的绘制流程了如指掌。首先我们先来看看View 的绘制流程: 从上面View的绘制流程图上我们对invalidate 、requestLayout会触发哪些流程一目了然。 接下来我们用源码的角度上来原创 2016-10-26 20:42:54 · 743 阅读 · 1 评论 -
Android 引发内存泄漏类型总结
内存泄露在开发过程中我们会经常遇到,分析内存泄露的工具经常会用到Heap Tool 与 Memory Analyzer tool(MAT)。Heap Tool可以查看当前的内存快照,从数据里可以看到当前内存的占用和回收情况,每次垃圾回收这里的数据都会更新,因为会不断获取内存数据刷新显示,所以这时候对应用操作会出现卡顿。 我们一直在说内存泄漏,那么到底什么才是内存泄漏呢?接下来我把我在开发过程中遇到的原创 2016-11-21 17:50:34 · 310 阅读 · 0 评论 -
Android Handler引起的内存泄漏分析与解决
在开发中我们经常用Handler来进行子线程修改UI界面,进程间通讯等等,在用的过程中稍不注意就有可能发出handler leaks的警告,即“This Handler class should be static or leaks might occur ..”的警告。Google给出的解释如下:Issue: Ensures that Handler classes do not hold on原创 2016-11-21 14:37:13 · 514 阅读 · 0 评论 -
从源码上分析Android View保存数据状态
在Android开发旅途中,经常会遇到系统控件无法满足我们的视觉,交互效果,这个时候我们常常需要自己自定义控件来满足我们的需求。在这个开发探索过程中,我们不可避免得遇到View要保存状态信息这样的问题。刚开始接触控件自定义开发的时候,我自己也搞不懂要怎样保存当前数据,如果没有对当前状态数据进行保存,那么如果一不小心旋转一下手机屏幕或者按下back,那么控件又回到初始化状态,之前所有的输入都已经不存在原创 2016-10-20 16:33:54 · 922 阅读 · 0 评论 -
EventBus源码分析
在进入EventBus源码分析之前,如果对EventBus的使用还不是很清楚的,可以参考上一篇文章EventBus使用 首先我们先通过一张简单的图来了解一下EventBus的工作原理: EventBus工作原理图: 也可以看这张图: 当然作为一名Android开发人员,我们肯定是想更深入地了解EventBus是怎么工作的,所以探讨源码是必不可少的。所以我们将进行EventBus源码的原创 2016-10-18 18:18:23 · 391 阅读 · 0 评论 -
EventBus基本使用简介
一、背景介绍 在编程过程中,当我们想通知其他组件某些事情发生时,我们通常使用观察者模式,正式因为观察者模式非常常见,所以在jdk1.5中已经帮助我们实现了观察者模式,我们只需要简单的继承一些类就可以快速使用观察者模式,在Android中也有一个类似功能的开源库EventBus。 此篇幅主要讲述EventBus是什么?EventBus可以帮助我们干些什么?还有EventBus是怎样调用的?下一篇幅将原创 2016-10-18 16:01:20 · 396 阅读 · 0 评论 -
从源码上剖析Android View绘制Drawable的原理
一、引言对于Drawable,相比每个Android 开发者都无比熟悉,在开发过程中我们经常setBackground设置背景,那么对于Drawable你了解多少呢?对于View是怎样把Drawable绘制出来又了解多少呢?对View根据不同状态绘制不同的背景又了解多少呢?也就是我们经常使用的selector,今天我们从源码上来深度剖析这些原理,从本质上卸下Drawable的神秘面纱。二、背景介绍在原创 2016-10-27 17:35:10 · 1682 阅读 · 0 评论