自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ricky 的博客

一切伟大的思想和行动,都有一个微不足道的开始:那就是Hello,World

  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 由浅入深了解 Handler

本文涉及到的源码都以 Android Code Search 提供的最新的为准由浅入深了解 HandlerHandler 面试必备选项,不管是什么等级的面试,几乎百分百会面试到Handler。Handler 的核心功能贯穿了 framework ,native 和 kernel 。接下来我们就从 framework 再到 native,一直到深入到 kernel 层开始对 Handler 进行分析。Handler 是什么?如果要学习Handler,不能将Handler单独拎出来学习。需要结合其.

2021-03-23 13:10:31 390

原创 整理的Android面试题

Java 相关面向对象的三大特性,如何理解其中的多态?接口与抽象类的区别?static 方法可以被覆盖吗?为什么?String,StringBuffer,StringBuilder 的区别。StringBuffer,StringBuilder底层实现是通过byte数据,外加数组的拷贝来实现的常见序列化协议及其优缺点JVM 内存模型JVM运行机制(理解JVM是如何运行的)栈帧的结构对

2017-07-10 16:01:40 1097

原创 Android Activity URL Scheme的介绍与应用

有可能说到URL Scheme,很多还不太了解,甚至根本就不知道是什么东西。下面我们来好好认识一下它。什么是URL SchemeURL Scheme 是Android中一种页面内跳转的协议; 也可以被称为 URLRouter。它可以通过匹配 URI 去打开对应的Activity。就类似网页中,我们打开网页的方式去打开一个Activity。当然这是一种通过Intent隐式打开Activity的方式。现

2017-07-05 15:20:04 4877 1

原创 观察者模式

观察者模式定义​ 定义对象间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆能收到通知并自动更新。​ 观察者模式又叫做发布-订阅模式(Publish/Subscribe);模型-视图模式(Model/View);源-监听器模式(Source/Listener);从属者模式(Dependents)。​ 观察者模式可以类比我们现在比较常见的微信订阅号。当我们订阅了某个

2017-06-14 13:53:08 1005

原创 建造者模式

建造者模式定义由于它是根据英文翻译而来,根据不同的翻译,建造者模式又可以称为生成器模式。它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。​ 建造者模式是一步一步的来创建一个复杂的对象;该对象一般不会自己去构建具体的内容,而是通过属于自己建造者去构建;该建造者独立于其它的对象。​ 我们在实际生活中开的汽车,就不是它自己组装的,它是通过汽车工人一步一步组装起来的;比如

2017-06-09 13:23:10 664

原创 单例模式

单例模式什么是单例模式Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”定义中有三个要点:我们设定的某个类必须有且有一个实例这个类必须自己去实例化自己这个类需要向整个系统提供调用它的实例的接口我们可以结合上面的三个要点来推测该设计模式的实现方式:它需要自己实例化自己,那么就不允许别的类来实例化,所以它的构造函数必定是private 来声明的私有构造;而且它只允

2017-03-18 19:35:32 617

原创 阿里巴巴旗下 Android 平台上的秒级编译方案 - Freeline

下面这段引自:Freeline 在 Github 的原理介绍Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息。Freeline 由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeli

2017-03-06 17:16:23 1162

原创 Mac 系统下Android 源码的下载与编译

Mac 系统下Android 源码的下载与编译我的环境:系统版本:MAC OS X EI Capitan 10.11.6处理器 : Intel Core i7内存 : 16 GB ;500G 闪存JDK : 1.8.0_91Xcode : Version 8.2.1 (8C1002)Mac 下载源码的一般步骤:创建一个大小写敏感的磁盘镜像;因为源码只能在大小写敏感的磁盘上编译hdiu

2017-03-06 12:32:26 4064 2

原创 年终总结

​ 2016年的最后一天了,回首看看,留有了很多遗憾,很多想干的事情都没有干。​ 2016年,换了两家公司,第一家是正常跳槽,应朋友邀请去的,但是不到两个月就开始裁员;本来我是可以不用走的,但想了想还是走吧;拿了两个月的补偿,潇潇洒洒的走了。时隔半个多月到了第二家公司,怎么评价现在的这个公司呢!公司制度一般,加班有些严重,而且是隔周双休;稍微有些累,但是领导不错。在这里第一次尝试站着写代码,

2016-12-31 23:28:27 544 2

原创 Android View绘制过程

​ View经过测量和布局之后,就剩下绘制了;测量和布局是为了确定View尺寸和位置,而绘制就是就是将我们想显示到界面上的东西画到View上。​ View的绘制过程在draw(Canvas)方法中完成的;这个方法有690多行;但是它做的工作其实很简单,可以总结以下几点:1. 绘制背景2. 绘制当前View的内容(调用onDraw)3. 绘制当前View的所有子View4. 绘制装饰部分

2016-12-31 23:26:10 609

原创 Android View 布局 过程

​ 当Android 的View测量完毕之后,才可以去布局。我们在测量时获取到的MeasuredHeight和MeasuredWidth,在布局的时候就会用到,毕竟只有知道尺寸才好确定位置。布局相对于测量来说就相对简单了很多。布局的过程就是确定View在界面显示位置的过程。View是一个矩形,决定一个View在界面显示的位置的信息主要是四个边到父View的边距,这里会有四个变量来记录各个边到父V

2016-12-30 17:38:20 574

原创 Android View 测量过程

为什么要测量​ 我们在xml里设置布局时,必须要设定它的宽和高,不设置的话就会报错。 这是因为我们必须要告诉系统我们的View/ViewGroup需要多大的区域去绘制它。当我们给它设置好宽高后,系统需要测量一下才能知道它的尺寸,从而确定需要多大的区域去绘制它。​ 在View类里,使用了measure(int widthMeasureSpec, int heightMeasureSpec)测量

2016-12-29 13:15:11 917 1

原创 View 相关介绍

View 简单介绍View是Android显示用户交互界面最基本的模块;它在界面上占据一块矩形区域,它在该区域内进行绘图和事件处理操作; View是一个类,它是所有widget父类,这里的widget可以创建交互的界面组件,比如文件,按钮等。View有一个直接子类叫ViewGroup,它是所有布局的父类;布局。布局是一个容器,它可以盛装其它的View(比如TextView,Button等den),它

2016-12-28 14:32:37 937

原创 CoordinatorLayout中Behavior介绍与简单使用

​ 我们之前简单介绍了AppBarLayout,CollapsingToolbarLayout的使用,他们的都是作为CoordinatorLayout的子View 使用的。如果没有CoordinatorLayout作为父View,它们是没有任何效果的。今天我们介绍一下CoordinatorLayout中的Behavior。在CoorindatorLayout中其实没有做太多的事情,它就是一个Vi

2016-11-02 13:50:32 5182

原创 AppBarLayout CollapsingToolbarLayout 的进一步使用

​ 最近有个项目,虽然暂时停了,但是有效果还是想做一下;一方面是自己好奇,另一方面又怕领导突然一拍脑门,又重新做起来。正好利用到之前说过的AppBarLaout,CollapsingToolbarLayout,所以趁着之前的热乎劲一块搞出来就完了。关于这两个控件的使用请看一下AppBarLayout 介绍和简单实用和 CollapsingToolbarLayout 介绍和简单使用​ 首先看一

2016-10-28 18:37:45 9906 1

原创 CollapsingToolbarLayout 介绍和简单使用

​ 上次我们介绍了AppBarLayout,这一次我们介绍CollapsingToolbarLayout。 CollapsingToolbarLayout 介绍​ 顾名思义,这是一个可折叠的Toolbar;不过它的使用必须在AppBarLayout的基础之上,它必须作为AppBarLayout的直接子类元素使用;否则起不到应用的效果。​ 在Android Studio 里创建module

2016-10-27 18:52:59 3701

原创 AppBarLayout 介绍和简单使用

关于Android Design Support Library​ 在Android 5.0 时出现了 Material Design 。瞬时感觉Android 更加牛B哄哄了,可是其它老版本的Android 怎么办呢?它们也行这么牛B哄哄,走到哪里都耀眼夺目。怎么办呢?Google很贴心的提供了Android Design Support Library,这样就可以支持 Android 2.1

2016-10-27 18:45:41 19375 1

转载 Say Hello to Retrofit

该文章转载自LaterEqualsNever的Say Hello to Retrofit之前对Android里常用的网络请求库OkHttp与Volley做了简单的学习归纳与总结,这里看这个系列中的最后一篇,来认识一下Retrofit。 Retrofit可以认为是OkHttp的“升级版”。之所以这么说,是因为其内部默认正是基于OkHttp来进行封装的。这点从Retrofit这个命名就可以看出端倪。

2016-10-12 10:05:58 1276

转载 Android View的绘制流程

Android View的绘制流程View的绘制和事件处理是两个重要的主题,上一篇《图解 Android事件分发机制》已经把事件的分发机制讲得比较详细了,这一篇是针对View的绘制,View的绘制如果你有所了解,基本分为measure、layout、draw 过程,其中比较难理解就是measure过程,所以本篇文章大幅笔地分析measure过程,相对讲得比较详细,文章也比较长,如果你对View的绘制

2016-09-12 08:35:17 525

转载 图解 Android 事件分发机制

在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机制网上的博文很多,

2016-09-12 08:33:56 477

原创 使用IjkPlayer 实现直播功能

最近直播很火,是的,很火很火!我也想搞一下这个很火很火的东西,怎么办?那懂ffmpeg吗?好吧,我不懂,所以我就瞄上了哔哩哔哩的ijkplayer了。ijkplayer是哔哩哔哩开源的一个播放器,可以支持本地播放,视频直播等功能。如果你时间很充裕,并且富有学习精神,那你要先去Github上把它的源码clone下来,是的你自己要先去编译它的源代码。那么你需要安装NDK,因为有些复杂,这里不介绍了。我们

2016-09-06 15:19:25 23288 7

原创 Bitmap的加载简单优化

Bitmap的加载简单优化Bitmap如何加载Bitmap可以认为是Android系统将图片加载GPU的一个映射,Android可以读取png格式的,也可以读取jpg格式的。那么Android是如何加载一张图片的呢?有个类叫做BitmapFactory,它提供了四个方法:decodeFile(从文件系统中加载),decodeResource(从资源中加载),decodeStream(从输入流中加载)

2016-09-03 14:06:02 1003

原创 Android 进程间通信之Messenger

Android进程间通讯的方式​ 当我们需要执行 IPC(进程间通信)时,一般有两种方式:AIDL和Messenger。关于AIDL的介绍请参看Android进程间通讯之AIDL。我们这里只介绍Messenger。​ 使用Messenger要比使用 AIDL 实现它更加简单,因为 Messenger 会将所有服务调用排入队列,而纯粹的 AIDL 接口会同时向服务发送多个请求,服务随后必须应对

2016-08-27 23:16:20 1600

原创 Android进程间通讯之AIDL

Android AIDL的使用什么是AIDL?AIDL是Android Interface Definition Language 的英文缩写,,通过AIDL定义的程序接口可以实现服务端与客户端的通信。其实所谓的服务端跟客户端都是我们开发的APP,我们可以简单理解为,其中一个APP提供服务数据,另一个APP可以去获取数据服务提供的数据。我们知道两个APP分属于两个不同的进程,所以说AIDL是用于An

2016-08-15 16:19:37 1022

原创 Android屏幕适配之支持各种屏幕密度(三)

我们之前了解过屏幕的像素密度 dpi,我们身边有很多种类的手机,它们的dpi各不相同,我们如何去适配这些不同的屏幕呢?单位务必使用dp或者sp;dp 是一种非密度制约像素,其尺寸与 160 dpi 像素的实际尺寸相同,即对应mdpi下的尺寸。sp 也是一种基本单位,它用于设置文字的大小,它可以根据我们设置的文字大小进行调整,类似于dp,但是它只适用于文字的大小的设置,不能设置布局的尺寸。默认的我们的

2016-07-23 17:25:02 2884

原创 Android屏幕适配之布局设置(二)

书接上回,我们已经了解了一些关于适配的一些相关概念,接下来我们会了解一下,在设置布局时我们应该注意的地方。尽量不去设定具体的尺寸值。为了确保布局适应各种尺寸的屏幕,在保证功能实现的前提下,最好不要写死一些尺寸,这样的硬编码,我们最好使用“match_parent”,”wrap_content”,”weight”这些不用指定具体的尺寸值的参数,这样视图就会根据自身需要的空间去充填。这样就可以让布局去适

2016-07-23 17:24:03 3562

原创 Android 屏幕适配之各种概念(一)

Android 屏幕适配为什么要屏幕适配在讨论这个问题之前 我们先看下面的这张图:这张图是在友盟网站上找到的,这张图显示的是国内的Android 各种设备的占有率,方块代表 Android 设备的品牌,方块中的碎片代表品牌下属机型,方块面积大小代表占有率大小。看完这张图,然后再看下面这张图:这是 Android 设备的分辨率当月(2016-06)的用户活跃统计图,看着密密麻麻的分辨率,不用也知道,A

2016-07-23 17:22:14 761

原创 Android Http 简单介绍

这里简单介绍其中的Http通信。在Android 6.0 中彻底的将Apache的HttpClient给移除掉了。而且google提倡在Android 2.3之后的网络请求中使用HttpURLConnnection,之前的HttpClient 就不再建议使用了。所以我们这里只介绍HttpURLConnnection

2016-06-03 11:33:51 2515

原创 Android SQLite 的介绍和使用(二)

上一节简单介绍了一下SQLite,这一节我们开始SQLite在Android中的应用。Android提供了一个数据库的帮助类 SQLiteOpenHelper,用于管理数据库的创建和版本管理。我们可以继承这个类,实现它的 onCreate和 onUpgrade方法。我们可以在这里设置数据库的版本,数据库名称,创建数据库表等。下面看代码:public class DBHelper extends SQ

2016-05-20 11:17:14 3994

原创 Android SQLite 的介绍和使用(一)

SQLite 是一款小巧的嵌入式数据库,在Android和IOS中使用的数据库就是SQLite,它用的内存很少。并且它支持支持 SQL92(SQL2)标准的大多数查询语言的功能。而且它不需要配置,很容易使用。SQLite命令DDL–数据定义语言CREATE:创建一个新表,或者其他对象ALERT: 修改数据库中的某个已有对象DROP:删除整个表或其他对象DML–数据操作语言INSERT:插入

2016-05-20 11:16:30 587

原创 RxJava介绍和使用

RxAndroid,RxJava,Observable,Subscriber

2016-04-20 17:19:19 6549 1

原创 ListView的使用(二)

BaseAdapter的使用,ListView多布局,`getItemViewType`和`getViewTypeCount`的使用。

2016-04-14 18:58:28 375

原创 ListView的使用(一)

ListView 在Android 开发中是比较常用的控件,ListView 主要用于显示列表。比如常见的新闻列表和商品列表等,虽然现在Google提供了功能更加强大的RecylerView,但是ListView仍然占有一席之地。我们今天就介绍一下ListView。ListView 常用的属性:<!-- 默认的背景滑动缓存色,如果滑动时背景色是黑色,可以这样设置 -->android:cacheC

2016-04-14 18:53:12 630

原创 Activity的介绍和使用(二)

这一节介绍Activity的屏幕旋转对生命周期的影响,以及Activity的启动模式。

2016-04-08 16:29:12 1625

原创 Activity 的介绍和使用(一)

Activity是什么Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android App 中只要能看见的几乎都要依托于Activity,所以Activity是在开发中使用最频繁的一种组件。Activity的生

2016-04-05 15:57:23 91169 5

原创 Fragment的介绍和使用(三)

上一节简单实现了Fragment的动态使用,但是还有很多细节没有提及,这一节我们把一些常用的细节说说一说。Fragment传递参数上一节里我们可以实现Fragment之间跳转,但是我们需要在跳转的同时传递参数,要怎么办呢?不要着急,Google的工程师也想到了,所以提供了解决方法。Fragment有个叫做setArguments(Bundle)的方法,用来传递参数;我们可以通过Bundle,添加我们

2016-04-01 17:09:47 2462

原创 Fragment的介绍和使用(二)

上一节我们简单讲解了一下Fragment静态的用法,这几我们来了解一下动态用法。在介绍Fragment的动态用法之前需要介绍一些API。FragmentManagerFragmentManager是在Activity里根Fragment交互的接口,主要在Activity对Fragment进行管理。它可以通过Activity中的getFragmentManager()方法获取。如果使用的supprot

2016-04-01 17:09:10 871

原创 Fragment的介绍和使用(一)

什么是Fragment ?Fragment意为碎片,片段。在Google的官方文档介绍,Fragment是一个应用程序的用户界面的一部分或者用来执行某些行为。我们都知道,如果需要跟用户交互,都需要用到Activity,所以,Fragment必须是嵌入到Activity中。我们可以把多个Fragment放到一个Activity里,也可以把一个Fragment在多个Activity里复用。我们可以理解F

2016-04-01 17:08:28 1558

原创 Span 介绍及使用(二)

上一节介绍了一下Span,有些乱,这一节我们来讲讲Android 提供的各种Span的应用。使用 Span 的步骤定义你要显示的文本定义你需要的Span使用将要显示文字,构造一个SpannableString调用SpannableString的setSpan()方法设置span;setSpan()的参数会有设置文字的范围。调用TextView的setText()方法,显示Spannable

2016-03-21 12:14:04 9264

原创 Span 介绍及使用(一)

之前有个项目需要对文字实现局部点击;实现时用到了Span,感觉很有意思,所以记录一下。Span主要用于TextView中内容的显示,可以控制内容的大小,样式,颜色,文字风格,文字的字形等。功能十分的强大。Span只是Android开发中的一个概念,并不是一个类,或者是一个接口;因为TextView可以显示文字,图片;显示文字时也有多有少,有时可能要控制某一个段落的文字的样式;也有时要控制某几个字符的

2016-03-21 12:13:04 25652

Android AIDL demo

Android AIDL 的 简单代码示例,详细请看博客 :http://blog.csdn.net/litengit/article/details/52193984

2016-08-15

空空如也

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

TA关注的人

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