- 博客(33)
- 资源 (4)
- 收藏
- 关注
原创 理解Window和WindowManager
首先我们来看下如果通过WindowManager添加一个Window: Button mFloatingButton = new Button(this); mFloatingButton.setText("button"); WindowManager.LayoutParams layoutParams = new WindowManager.Layout...
2019-02-05 00:07:36
353
原创 android消息机制
android消息机制主要指的是Handler的运行机制以及Handler所附带的MessageQueue和Loop的工作过程,这三者实际上是一体的,只不过我们平时开发过程中接触比较多的是Handler而已。Handler的工作主要是将一个任务切换到执行线程去执行,那么为什么Android会提供这个功能呢?这是因为Android规定访问UI只能在主线程去进行,如果子线程中访问UI,就会导致程序抛出...
2019-02-03 20:03:21
443
原创 Binder机制
直观来讲,Binder是Android中的一个类,它实现了IBinder接口。从IPC角度来看,Binder是Android中一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在Linux中没有:从Android framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager...
2019-02-02 18:26:50
593
原创 Glide源码分析
前言对于图片加载框架,我们比较熟悉的有UniversalImageLoader,Glide,Picassl和Facebook的fresco,对于Glide和Picasso,他们有太多的相似点,对于他们的区别可以参考http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2650.html,fresco体积比较搭,不能加载g...
2018-10-24 22:46:48
492
原创 Glide4用法详解
开始首先在app/build.gradle文件中增加如下依赖:dependencies { implementation 'com.github.bumptech.glide:glide:4.8.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'}再添加上网络权限加载图片<...
2018-10-20 21:00:50
2437
原创 Android属性动画源码分析
这篇文章主要讲解一些属性动画的源码,通过此篇文章能够帮助我们更好的理解和使用属性动画。1、基本使用我们先看下属性的动画的基本使用,并依此为入口,逐步分析属性动画的源码:ObjectAnimator .ofInt(target,propName,values[]) .setInterpolator(LinearInterpolator) .s...
2018-09-09 14:14:02
471
原创 View的事件传递原理和源码分析
本文将将接View的事件传递机制,通过本文的学习,将能够更好的自定义出我们想要的View。一、点击事件的传递规则在讲解源码之前,我们首先介绍一下我们比较熟知的三个方法。public boolean dispatchTouchEvent(MotionEvent ev)用于事件的分发,如果事件传递到此View,那么一定会调用此方法,返回结果受到onInterceptTouchEvent...
2018-08-29 08:47:30
341
原创 设计模式之禅笔记——建造者模式
一、建造者模式的定义定义如下:Separate the construction of a complex object from its representation so that the same construction process can create different representations(将一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表...
2018-08-12 20:05:18
267
1
原创 设计模式之禅笔记——责任链模式
一、责任链模式的定义定义如下:Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chai...
2018-08-12 17:07:38
261
1
原创 设计模式之禅笔记——原型模式
一、单例模式的定义定义如下:Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象)通用类图:通用代码:public class...
2018-08-12 12:09:07
236
原创 单例模式
一、单例模式的定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例通用类图:角色介绍:Client——高层客户端Singleton——单例类实现单例模式主要有如下几个关键点:(1)构造方法不对外开放,一般为private(2)通过一个静态方法或者枚举返回单例类对象(3)确保单例类的对象有且只有一个,尤其是在多线程下;(4)确保单例类对象在...
2018-08-11 22:50:07
238
原创 设计模式之禅笔记——工厂方法模式
一、工厂方法模式的定义Define an interface for creating an object,but let subclasses decide which class to instantiate,Factory Method lets a class defer instantiation to subclasses(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂...
2018-07-31 08:03:04
195
原创 View的绘制流程及源码分析
这篇文章主要讲解的是View的绘制流程以及源码分析,讲解这些的主要目的是为了能够在理解View的工作原理上更好的自定义View。首先讲解一下布局文件是如何展现到屏幕上的。一、布局文件是如何呈现在屏幕上的我们从Activity的setContentView(R.layout.activity_main)入手了解UI绘制的起始过程。点进源码,我们会看到Activity.javap...
2018-07-18 23:31:41
1210
原创 设计模式之禅笔记——状态模式
一、状态模式的定义Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.(当一个对象的状态改变时允许其改变行为,这个对象看起来像改变了其类)状态模式的核心是封装,状态的变更引起了行为的变更,从外部看来就好像这个对象对i...
2018-07-16 21:40:52
730
原创 设计模式之禅笔记——装饰模式
一、装饰模式的定义装饰模式是一种比较常见的模式,其定义如下:Attach additional responsibilities to an object dynamically keeping the same interface.Decorators provide a flexible alternative to subclassing for extending functionalit...
2018-07-06 08:25:23
220
原创 设计模式之禅笔记——策略模式
一、策略模式的定义策略模式是一种比较简单的模式,也叫做政策模式,其定义如下:Define a family of algorithms,encapsulate each one ,and make them interchangeable.(定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。)类图:策略模式使用的就是面向对象的继承和多态机制,非常容易理解和掌握,我们再来看看策略模式的三个...
2018-07-03 20:51:51
262
原创 设计模式之禅笔记——观察者模式
一、观察者模式的定义观察者模式也叫发布订阅模式,它是一个在项目中经常使用的模式,其定义如下:Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.(定义对象间一种一...
2018-06-28 22:58:42
337
原创 设计模式之禅笔记——适配器模式
一、适配器模式的定义Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn't otherwise bacause of incompatible interfaces.(将一个类的接口 变成客户端所期待的另外一个接口,...
2018-06-27 23:08:28
235
原创 设计模式之禅笔记——模板方法模式
一、模板方法模式的定义Define the skeleton of an algorithm in an operation,deferring some steps to subclasses,Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm'...
2018-06-26 23:36:59
218
原创 AsyncTask的使用及源码分析
一、AsyncTask概述Android中的线程或者线程池是个很重要的概念,在Android中分为主线程和子线程,主线程是应用开启之后默认的线程,也是UI线程,主要用来处理与界面相关的事情。除了主线程之外的线程都是子线程。比如一些网络请求、IO操作等一些耗时操作都需要放在子线程执行,否则就会导致UI界面卡顿,掉帧等问题。Android中对于子线程多线程的处理有一些比较好的封装,比如AsyncTas...
2018-06-25 21:13:50
143
原创 沉浸式状态栏
什么是沉浸式,实际上,官方的沉浸式指的是全屏模式,不过,现在在国内,沉浸式状态栏普遍的被认为是类似于ios系统那样,透明的状态栏。目前情况是Android 4.4(API 19,包括API 19)以上才能实现沉浸式状态栏,Android 5.0(API 21 包括21)以上能设置状态栏背景颜色,Android 6.0(API 23包括API 23)以上能够设置状态栏文字和图标的颜色,小米、魅族手机...
2018-06-19 23:16:56
275
原创 管理状态栏和导航栏
1、将状态栏和导航栏变变暗在Android 4.0(API 14)以及更高的版本中,提供了一些将状态栏和导航栏变暗的方法,低版本没有提供相应的方法。代码如下:// This example uses decor view, but you can use any visible view.View decorView = getActivity().getWindow().getDecorView...
2018-06-05 23:26:56
775
原创 性能优化——内存分析工具的使用
本文将介绍比较常用的的内存泄漏检测工具,包括HeapSnapShot、HeapViewer、MAT一、HeapSnapShot的使用HeapSnapShot意思是堆快照,通过堆内存的信息来分析内存泄漏的问题。1、启动HeapSnapShot2、显示Heap SnapShot面板点击截图部分的左上角,可以看到有个App heap,点开,里面还有Image heap、Zygote heap,分别代码a...
2018-05-29 23:11:16
12031
1
原创 性能优化——内存优化
一、什么是内存泄露内存不在GC掌控之内了。就是当一个对象已经不需要再使用了,本该被回收时,而又另外一个正在使用的对象持有它的引用从而导致对象不能被回收。这种导致了本该被回收的对象不能被回收而停留在堆内存中时,就导致了内存泄露。二、内存分配的几种策略静态存储区:内存在编译期间就分配好,这块的内存在整个运行期间都一直存在。它主要存放静态数据、全局的static数据和一些常量2、栈式的在执行函数(方法)...
2018-05-27 19:29:27
1437
原创 性能优化——Android热修复技术,类加载机制详解
一、背景热修复技术慢慢的成为Android开发必不可少的技术,也是成为一名高级程序员必不可少的技能之一。那么什么是热修复技术呢?当app上线之后,发现了一个严重的bug,需要紧急修复,按照以往的惯例是修复bug、打包测试、发布到各个应用市场、用户覆盖安装,这样不仅耗时耗力,而且也很影响用户的体验。那么有没有一种技术可以在不升级app版本的情况下,直接就将bug修复呢?热修复技术就应运而生。目前比较...
2018-05-24 00:25:12
2006
原创 性能优化——Android图片压缩与优化的几种方式
图片优化压缩方式大概可以分为以下几类:更换图片格式,质量压缩,采样率压缩,缩放压缩,调用jpeg压缩等1、设置图片格式Android目前常用的图片格式有png,jpeg和webp,png:无损压缩图片格式,支持Alpha通道,Android切图素材多采用此格式jpeg:有损压缩图片格式,不支持背景透明,适用于照片等色彩丰富的大图压缩,不适合logowebp:是一种同时提供了有损压缩和无损压缩的图片...
2018-05-17 23:50:28
35826
12
转载 android FrameLayout响应了下层view的点击事件
解决方法 设置clickable为true[html] view plain copyFrameLayout span style="background-color: rgb(255, 0, 0);">android:clickable="true"span> android:id="@+
2017-10-28 16:52:39
4296
转载 ViewPager+Fragment实现懒加载
懒加载,就是滑动Viewpager的过程中,当fragment显示的时候才去加载数据,但是由于ViewPager的预加载机制,会提前初始化左右两边的fragment,那么,要想实现懒加载,就需要一些骚操作了骚一、既然Viewpager有个setOffscreenPageLimit(int limit)方法,那么是不是我们就可以直接将里面的参数设置为0,让他不预加载页面不就可以嘿嘿嘿了,我只想说
2017-09-01 22:46:02
1176
原创 onSaveInstanceState、onRestoreInstanceState、onNewIntent调用时机
onSaveInstanceState是在Activity还有机会被显示的时候被调用(比如从ActivityA打开另外一个ActivityB,或者切换横竖屏导致ActivityA被销毁重建),在Activity被正常销毁的时候不会被调用(直接调用finish()的情况),调用时机是:onStop()之前被调用,与onPause()没有严格的前后顺序关系onRestoreInstanceStat
2017-08-19 22:14:36
1193
转载 关于PullToRefreshListView 上拉加载更多 的一个BUG
项目中用到了PullToRefreshListView, 使用起来非常方便, 功能也非常强大, 但是在使用中发现了一个BUG:PS: 只有加载更多的时候服务器只返回1条数据的时候才会出现这个问题PullToRefreshListView类中的 isLastItemVisible()方法 这个方法是判断最后一个child是否完全显示出来, 如果完全显示出来了上拉就会显示foote
2016-08-18 17:42:23
2589
原创 关于开源框架SuperRecyclerView瀑布流卡顿问题
今天写项目用SuperRecyclerView实现瀑布流效果的时候,发现了一个重大bug,当向下滑动瀑布流的时候,一直显示加载更多,同时页面卡的要命(差点摔手机,后来想想自己穷b一个,然后就忍了),向上滑动的时候也是同样,然后我就开始找是不是自己的问题,然后检查了一遍,还是没问题,会不会是自己优化的问题?然后又一顿优化,依然不行,算了算了,我还是直接说了吧,总之是经过各种心理斗争与煎熬之后我打算看
2016-01-02 23:11:07
4564
转载 \r与\n有什么区别
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。下面转一篇文章。 回车和换行 今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一
2014-08-14 14:06:12
507
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人