Android
文章平均质量分 96
我是一块好砖
我是一块砖,哪里需要哪里搬
展开
-
由浅入深了解 Handler
本文涉及到的源码都以 Android Code Search 提供的最新的为准由浅入深了解 HandlerHandler 面试必备选项,不管是什么等级的面试,几乎百分百会面试到Handler。Handler 的核心功能贯穿了 framework ,native 和 kernel 。接下来我们就从 framework 再到 native,一直到深入到 kernel 层开始对 Handler 进行分析。Handler 是什么?如果要学习Handler,不能将Handler单独拎出来学习。需要结合其.原创 2021-03-23 13:10:31 · 408 阅读 · 0 评论 -
Bitmap的加载简单优化
Bitmap的加载简单优化Bitmap如何加载Bitmap可以认为是Android系统将图片加载GPU的一个映射,Android可以读取png格式的,也可以读取jpg格式的。那么Android是如何加载一张图片的呢?有个类叫做BitmapFactory,它提供了四个方法:decodeFile(从文件系统中加载),decodeResource(从资源中加载),decodeStream(从输入流中加载)原创 2016-09-03 14:06:02 · 1017 阅读 · 0 评论 -
Android 进程间通信之Messenger
Android进程间通讯的方式 当我们需要执行 IPC(进程间通信)时,一般有两种方式:AIDL和Messenger。关于AIDL的介绍请参看Android进程间通讯之AIDL。我们这里只介绍Messenger。 使用Messenger要比使用 AIDL 实现它更加简单,因为 Messenger 会将所有服务调用排入队列,而纯粹的 AIDL 接口会同时向服务发送多个请求,服务随后必须应对原创 2016-08-27 23:16:20 · 1610 阅读 · 0 评论 -
使用IjkPlayer 实现直播功能
最近直播很火,是的,很火很火!我也想搞一下这个很火很火的东西,怎么办?那懂ffmpeg吗?好吧,我不懂,所以我就瞄上了哔哩哔哩的ijkplayer了。ijkplayer是哔哩哔哩开源的一个播放器,可以支持本地播放,视频直播等功能。如果你时间很充裕,并且富有学习精神,那你要先去Github上把它的源码clone下来,是的你自己要先去编译它的源代码。那么你需要安装NDK,因为有些复杂,这里不介绍了。我们原创 2016-09-06 15:19:25 · 23320 阅读 · 7 评论 -
Say Hello to Retrofit
该文章转载自LaterEqualsNever的Say Hello to Retrofit之前对Android里常用的网络请求库OkHttp与Volley做了简单的学习归纳与总结,这里看这个系列中的最后一篇,来认识一下Retrofit。 Retrofit可以认为是OkHttp的“升级版”。之所以这么说,是因为其内部默认正是基于OkHttp来进行封装的。这点从Retrofit这个命名就可以看出端倪。转载 2016-10-12 10:05:58 · 1287 阅读 · 0 评论 -
Volley 的介绍和使用(三)
这一节我们介绍自定义Request。 在上一节中我们只介绍了StringRequest的POST的请求方式,而没有介绍JsonObjectRequest和JsonArrayReqest的POST请求方式,因为这两个扩展至Request的类,覆盖了getBody()方法,把Request的encode 请求参数的方法修改了,把构造函数中的JSONObject对象转换成String, 直接发送出去了;原创 2016-03-17 16:02:49 · 957 阅读 · 0 评论 -
View 相关介绍
View 简单介绍View是Android显示用户交互界面最基本的模块;它在界面上占据一块矩形区域,它在该区域内进行绘图和事件处理操作; View是一个类,它是所有widget父类,这里的widget可以创建交互的界面组件,比如文件,按钮等。View有一个直接子类叫ViewGroup,它是所有布局的父类;布局。布局是一个容器,它可以盛装其它的View(比如TextView,Button等den),它原创 2016-12-28 14:32:37 · 977 阅读 · 0 评论 -
Android View 测量过程
为什么要测量 我们在xml里设置布局时,必须要设定它的宽和高,不设置的话就会报错。 这是因为我们必须要告诉系统我们的View/ViewGroup需要多大的区域去绘制它。当我们给它设置好宽高后,系统需要测量一下才能知道它的尺寸,从而确定需要多大的区域去绘制它。 在View类里,使用了measure(int widthMeasureSpec, int heightMeasureSpec)测量原创 2016-12-29 13:15:11 · 928 阅读 · 1 评论 -
Android View 布局 过程
当Android 的View测量完毕之后,才可以去布局。我们在测量时获取到的MeasuredHeight和MeasuredWidth,在布局的时候就会用到,毕竟只有知道尺寸才好确定位置。布局相对于测量来说就相对简单了很多。布局的过程就是确定View在界面显示位置的过程。View是一个矩形,决定一个View在界面显示的位置的信息主要是四个边到父View的边距,这里会有四个变量来记录各个边到父V原创 2016-12-30 17:38:20 · 586 阅读 · 0 评论 -
Android View绘制过程
View经过测量和布局之后,就剩下绘制了;测量和布局是为了确定View尺寸和位置,而绘制就是就是将我们想显示到界面上的东西画到View上。 View的绘制过程在draw(Canvas)方法中完成的;这个方法有690多行;但是它做的工作其实很简单,可以总结以下几点:1. 绘制背景2. 绘制当前View的内容(调用onDraw)3. 绘制当前View的所有子View4. 绘制装饰部分原创 2016-12-31 23:26:10 · 616 阅读 · 0 评论 -
Activity的介绍和使用(二)
这一节介绍Activity的屏幕旋转对生命周期的影响,以及Activity的启动模式。原创 2016-04-08 16:29:12 · 1636 阅读 · 0 评论 -
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 · 19400 阅读 · 1 评论 -
CollapsingToolbarLayout 介绍和简单使用
上次我们介绍了AppBarLayout,这一次我们介绍CollapsingToolbarLayout。 CollapsingToolbarLayout 介绍 顾名思义,这是一个可折叠的Toolbar;不过它的使用必须在AppBarLayout的基础之上,它必须作为AppBarLayout的直接子类元素使用;否则起不到应用的效果。 在Android Studio 里创建module原创 2016-10-27 18:52:59 · 3740 阅读 · 0 评论 -
AppBarLayout CollapsingToolbarLayout 的进一步使用
最近有个项目,虽然暂时停了,但是有效果还是想做一下;一方面是自己好奇,另一方面又怕领导突然一拍脑门,又重新做起来。正好利用到之前说过的AppBarLaout,CollapsingToolbarLayout,所以趁着之前的热乎劲一块搞出来就完了。关于这两个控件的使用请看一下AppBarLayout 介绍和简单实用和 CollapsingToolbarLayout 介绍和简单使用 首先看一原创 2016-10-28 18:37:45 · 9917 阅读 · 1 评论 -
CoordinatorLayout中Behavior介绍与简单使用
我们之前简单介绍了AppBarLayout,CollapsingToolbarLayout的使用,他们的都是作为CoordinatorLayout的子View 使用的。如果没有CoordinatorLayout作为父View,它们是没有任何效果的。今天我们介绍一下CoordinatorLayout中的Behavior。在CoorindatorLayout中其实没有做太多的事情,它就是一个Vi原创 2016-11-02 13:50:32 · 5232 阅读 · 0 评论 -
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 · 4067 阅读 · 2 评论 -
阿里巴巴旗下 Android 平台上的秒级编译方案 - Freeline
下面这段引自:Freeline 在 Github 的原理介绍Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息。Freeline 由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeli原创 2017-03-06 17:16:23 · 1171 阅读 · 0 评论 -
Android Activity URL Scheme的介绍与应用
有可能说到URL Scheme,很多还不太了解,甚至根本就不知道是什么东西。下面我们来好好认识一下它。什么是URL SchemeURL Scheme 是Android中一种页面内跳转的协议; 也可以被称为 URLRouter。它可以通过匹配 URI 去打开对应的Activity。就类似网页中,我们打开网页的方式去打开一个Activity。当然这是一种通过Intent隐式打开Activity的方式。现原创 2017-07-05 15:20:04 · 4918 阅读 · 1 评论 -
Android View的绘制流程
Android View的绘制流程View的绘制和事件处理是两个重要的主题,上一篇《图解 Android事件分发机制》已经把事件的分发机制讲得比较详细了,这一篇是针对View的绘制,View的绘制如果你有所了解,基本分为measure、layout、draw 过程,其中比较难理解就是measure过程,所以本篇文章大幅笔地分析measure过程,相对讲得比较详细,文章也比较长,如果你对View的绘制转载 2016-09-12 08:35:17 · 533 阅读 · 0 评论 -
图解 Android 事件分发机制
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机制网上的博文很多,转载 2016-09-12 08:33:56 · 482 阅读 · 0 评论 -
Fragment的介绍和使用(三)
上一节简单实现了Fragment的动态使用,但是还有很多细节没有提及,这一节我们把一些常用的细节说说一说。Fragment传递参数上一节里我们可以实现Fragment之间跳转,但是我们需要在跳转的同时传递参数,要怎么办呢?不要着急,Google的工程师也想到了,所以提供了解决方法。Fragment有个叫做setArguments(Bundle)的方法,用来传递参数;我们可以通过Bundle,添加我们原创 2016-04-01 17:09:47 · 2476 阅读 · 0 评论 -
Fragment的介绍和使用(一)
什么是Fragment ?Fragment意为碎片,片段。在Google的官方文档介绍,Fragment是一个应用程序的用户界面的一部分或者用来执行某些行为。我们都知道,如果需要跟用户交互,都需要用到Activity,所以,Fragment必须是嵌入到Activity中。我们可以把多个Fragment放到一个Activity里,也可以把一个Fragment在多个Activity里复用。我们可以理解F原创 2016-04-01 17:08:28 · 1571 阅读 · 0 评论 -
Span 介绍及使用(一)
之前有个项目需要对文字实现局部点击;实现时用到了Span,感觉很有意思,所以记录一下。Span主要用于TextView中内容的显示,可以控制内容的大小,样式,颜色,文字风格,文字的字形等。功能十分的强大。Span只是Android开发中的一个概念,并不是一个类,或者是一个接口;因为TextView可以显示文字,图片;显示文字时也有多有少,有时可能要控制某一个段落的文字的样式;也有时要控制某几个字符的原创 2016-03-21 12:13:04 · 25711 阅读 · 0 评论 -
Span 介绍及使用(二)
上一节介绍了一下Span,有些乱,这一节我们来讲讲Android 提供的各种Span的应用。使用 Span 的步骤定义你要显示的文本定义你需要的Span使用将要显示文字,构造一个SpannableString调用SpannableString的setSpan()方法设置span;setSpan()的参数会有设置文字的范围。调用TextView的setText()方法,显示Spannable原创 2016-03-21 12:14:04 · 9298 阅读 · 0 评论 -
Activity 的介绍和使用(一)
Activity是什么Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android App 中只要能看见的几乎都要依托于Activity,所以Activity是在开发中使用最频繁的一种组件。Activity的生原创 2016-04-05 15:57:23 · 91379 阅读 · 5 评论 -
Fragment的介绍和使用(二)
上一节我们简单讲解了一下Fragment静态的用法,这几我们来了解一下动态用法。在介绍Fragment的动态用法之前需要介绍一些API。FragmentManagerFragmentManager是在Activity里根Fragment交互的接口,主要在Activity对Fragment进行管理。它可以通过Activity中的getFragmentManager()方法获取。如果使用的supprot原创 2016-04-01 17:09:10 · 881 阅读 · 0 评论 -
Volley 的介绍和使用(一)
Volley 介绍 一Volley是在Google I/O 2013发布的一款网络请求框架,主要用于小数据量的网络请求,包括图片的异步加载和缓存功能。在开发中可以很好的帮助开发者进行网络操作,并且更加高效。Volley的英文意为“齐射”,在发布Volley时Goole的配图就是一副射箭的图,可以看出来,齐射的箭支并不太多,这说明,它特别适合数据量不是太大的网络请求。在手机端一般没有太大的请求量,所以原创 2016-03-17 15:51:04 · 1190 阅读 · 0 评论 -
ListView的使用(一)
ListView 在Android 开发中是比较常用的控件,ListView 主要用于显示列表。比如常见的新闻列表和商品列表等,虽然现在Google提供了功能更加强大的RecylerView,但是ListView仍然占有一席之地。我们今天就介绍一下ListView。ListView 常用的属性:<!-- 默认的背景滑动缓存色,如果滑动时背景色是黑色,可以这样设置 -->android:cacheC原创 2016-04-14 18:53:12 · 638 阅读 · 0 评论 -
ListView的使用(二)
BaseAdapter的使用,ListView多布局,`getItemViewType`和`getViewTypeCount`的使用。原创 2016-04-14 18:58:28 · 384 阅读 · 0 评论 -
RxJava介绍和使用
RxAndroid,RxJava,Observable,Subscriber原创 2016-04-20 17:19:19 · 6570 阅读 · 1 评论 -
Android SQLite 的介绍和使用(一)
SQLite 是一款小巧的嵌入式数据库,在Android和IOS中使用的数据库就是SQLite,它用的内存很少。并且它支持支持 SQL92(SQL2)标准的大多数查询语言的功能。而且它不需要配置,很容易使用。SQLite命令DDL–数据定义语言CREATE:创建一个新表,或者其他对象ALERT: 修改数据库中的某个已有对象DROP:删除整个表或其他对象DML–数据操作语言INSERT:插入原创 2016-05-20 11:16:30 · 593 阅读 · 0 评论 -
Android SQLite 的介绍和使用(二)
上一节简单介绍了一下SQLite,这一节我们开始SQLite在Android中的应用。Android提供了一个数据库的帮助类 SQLiteOpenHelper,用于管理数据库的创建和版本管理。我们可以继承这个类,实现它的 onCreate和 onUpgrade方法。我们可以在这里设置数据库的版本,数据库名称,创建数据库表等。下面看代码:public class DBHelper extends SQ原创 2016-05-20 11:17:14 · 4006 阅读 · 0 评论 -
Android Http 简单介绍
这里简单介绍其中的Http通信。在Android 6.0 中彻底的将Apache的HttpClient给移除掉了。而且google提倡在Android 2.3之后的网络请求中使用HttpURLConnnection,之前的HttpClient 就不再建议使用了。所以我们这里只介绍HttpURLConnnection原创 2016-06-03 11:33:51 · 2530 阅读 · 0 评论 -
Android 屏幕适配之各种概念(一)
Android 屏幕适配为什么要屏幕适配在讨论这个问题之前 我们先看下面的这张图:这张图是在友盟网站上找到的,这张图显示的是国内的Android 各种设备的占有率,方块代表 Android 设备的品牌,方块中的碎片代表品牌下属机型,方块面积大小代表占有率大小。看完这张图,然后再看下面这张图:这是 Android 设备的分辨率当月(2016-06)的用户活跃统计图,看着密密麻麻的分辨率,不用也知道,A原创 2016-07-23 17:22:14 · 765 阅读 · 0 评论 -
Android屏幕适配之布局设置(二)
书接上回,我们已经了解了一些关于适配的一些相关概念,接下来我们会了解一下,在设置布局时我们应该注意的地方。尽量不去设定具体的尺寸值。为了确保布局适应各种尺寸的屏幕,在保证功能实现的前提下,最好不要写死一些尺寸,这样的硬编码,我们最好使用“match_parent”,”wrap_content”,”weight”这些不用指定具体的尺寸值的参数,这样视图就会根据自身需要的空间去充填。这样就可以让布局去适原创 2016-07-23 17:24:03 · 3577 阅读 · 0 评论 -
Android屏幕适配之支持各种屏幕密度(三)
我们之前了解过屏幕的像素密度 dpi,我们身边有很多种类的手机,它们的dpi各不相同,我们如何去适配这些不同的屏幕呢?单位务必使用dp或者sp;dp 是一种非密度制约像素,其尺寸与 160 dpi 像素的实际尺寸相同,即对应mdpi下的尺寸。sp 也是一种基本单位,它用于设置文字的大小,它可以根据我们设置的文字大小进行调整,类似于dp,但是它只适用于文字的大小的设置,不能设置布局的尺寸。默认的我们的原创 2016-07-23 17:25:02 · 2895 阅读 · 0 评论 -
Android进程间通讯之AIDL
Android AIDL的使用什么是AIDL?AIDL是Android Interface Definition Language 的英文缩写,,通过AIDL定义的程序接口可以实现服务端与客户端的通信。其实所谓的服务端跟客户端都是我们开发的APP,我们可以简单理解为,其中一个APP提供服务数据,另一个APP可以去获取数据服务提供的数据。我们知道两个APP分属于两个不同的进程,所以说AIDL是用于An原创 2016-08-15 16:19:37 · 1054 阅读 · 0 评论 -
Volley 的介绍和使用(二)
在上一节中,讲解了Volley基本的应用,但是还有一些小问题,这里接着讲解。RequestQueueVolley 所有的操作几乎都是围绕RequestQueue来进行的;里面维护了网络请求,请求队列、缓存队列等东西,如果每个请求都创建一个RequestQueue对性能会有很多影响的,甚至会导致OutOfMemery;所以整个应用采取一个RequestQueue,将它做成单例的。因为在创建Reques原创 2016-03-17 15:58:48 · 612 阅读 · 0 评论