Android
文章平均质量分 74
QuincyJiang
这个作者很懒,什么都没留下…
展开
-
Launcher3 壁纸流程分析
Launcher3 壁纸分析Launcher3 壁纸分析WallpaperPickerActivity结构1 父类WallpaperCropActivity2 布局文件wallpaper_pickerxml初始化流程1 加载壁纸列表11 系统壁纸12 图库壁纸13 动态壁纸2 加载图库壁纸按键3 Actionbar的初始化和响应4 点原创 2017-08-03 15:56:33 · 1370 阅读 · 0 评论 -
OkHttp使用总结
1. 历史上Http请求库优缺点在讲述OkHttp之前, 我们看下没有OkHttp的时代, 我们是如何完成http请求的.在没有OkHttp的日子, 我们使用HttpURLConnection或者HttpClient. 那么这两者都有什么优缺点呢? 为什么不在继续使用下去呢?HttpClient是Apache基金会的一个开源网络库, 功能十分强大, API数量众多, 但是正是由转载 2016-12-08 22:46:38 · 1469 阅读 · 0 评论 -
视频框架Vitamio学习
概述 开发公司一个乐视TV项目时,本来有个播放视频广告的功能,到最后不了了之。虽然没有在项目中做要求,但是这个点子还是激起了我研究多媒体的好奇心。刚好后面遇到一款比较喜欢的视频APP魔力盒,上面视频播放的体验及整个产品的设计都是我喜欢的类型,于是反编译了一下,发现其中用到了一个视频框架Vitamio,(还有一个很流畅的下拉刷新框架hardmark), 然后,一番百度googl转载 2016-11-26 17:49:47 · 819 阅读 · 0 评论 -
Android视频框架 Vitamio 打造自己的万能播放器
Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 功能强大,能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,还可以在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8) 等常见的多种视频流媒体协议,包括点播与直播。转载 2016-11-26 17:45:58 · 868 阅读 · 0 评论 -
常用开源类库總結
一、兼容类库ActionBarSherlock : Action Bar是Android 3.0后才开始支持的,ActionBarSherlock是让Action Bar功能支持2.X后的所有平台,而且他会自动的判断是调用原生Action Bar还是使用扩展ActionBar。在我的小熊词典里有用到这个库,而且很多非常知名的App也在使用这个库。 GitHub Official转载 2016-11-26 17:43:50 · 1300 阅读 · 0 评论 -
MVP+Dagger2+Retrofit实现更清晰的架构
这个架构已经有不少文章介绍了,今天打算自己实践下。MVP概念不多说了 相关介绍已经很多了Dagger2:依赖注入框架,用来解决依赖 除了基本依赖 mvp的V–>P–>M的之间依赖也轻松解决 方便不少Retrofit:用来解决M的RestApi数据获取, 天然支持Rxjava 不过这里我没用到Rxjava 其自带的Callback已经足够用了估计这个架构的难点在于Da转载 2016-10-28 22:57:49 · 363 阅读 · 0 评论 -
图片加载库Glide介绍
在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。它的成功让我非常感兴趣。我花了一整晚的时间把玩,决定分享一些自己的经验。在开始之前我想说,Glide和Picasso有90%的相似度,准确的说,就是Picasso的克隆版本。但是转载 2016-11-26 17:37:39 · 398 阅读 · 0 评论 -
初试Glide
在图片加载库烂大街的今天,选择一个适合自己使用的图片加载库已经成为了每一个Android开发者的必经之路。现在市面上知名的图片加载库有UIL,Picasso,Volley ImageLoader,Fresco以及我们今天的主角Glide。它们各有千秋,不能评定谁一定比谁好,只能说哪一个更适合你。我的理解下面我来谈一下个人对这些图片加载库的理解,如有错误,还望指教。Universal转载 2016-11-26 00:57:36 · 383 阅读 · 0 评论 -
初识LeakCanary
LeakCanaryAndroid 和 Java 内存泄露检测。“A small leak will sink a great ship.” - Benjamin Franklin千里之堤, 毁于蚁穴。 -- 《韩非子·喻老》demo一个非常简单的 LeakCanary demo: https://github.com转载 2016-12-06 22:39:07 · 496 阅读 · 0 评论 -
关于内存泄露的总结
集合类泄漏集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。如果这个集合类是全局性的变量 (比如类中的静态属性,全局性的 map 等即有静态引用或 final 一直指向它),那么没有相应的删除机制,很可能导致集合所占用的内存只增不减。比如上面的典型例子就是其中一种情况,当然实际上我们在项目中肯定不会写这么 2B 的代码,但稍不注意还是很容易出现这种情况,比如我们都喜欢通转载 2016-12-06 22:30:58 · 2551 阅读 · 0 评论 -
浅谈DecorView与ViewRootImpl
前言对于Android开发者来说,View无疑是开发中经常接触的,包括它的事件分发机制、测量、布局、绘制流程等,如果要自定义一个View,那么应该对以上流程有所了解、研究。本系列文章将会为大家带来View的工作流程详细解析。在深入接触View的测量、布局、绘制这三个流程之前,我们从Activity入手,看看从Activity创建后到View的正式工作之前,所要经历的步骤。以下源码均取自转载 2016-12-13 12:04:40 · 499 阅读 · 0 评论 -
如何更高效的使用MVP以及官方MVP架构解析
转载请标明出处: http://blog.csdn.net/dantestones/article/details/51445208Android mvp 架构的自述中我简单的介绍了mvp,以及怎么写mvp。我自己也将mvp运用到了项目中,其实mvp并没有固定的写法,正确的去理解架构的思想,都可以有自己独特的mvp写法。git上也有很多例子,比如google的android-arc转载 2016-11-22 14:49:27 · 796 阅读 · 0 评论 -
自定义View
1.自定义View首先我们要明白,为什么要自定义View?主要是Android系统内置的View无法实现我们的需求,我们需要针对我们的业务需求定制我们想要的View。自定义View我们大部分时候只需重写两个函数:onMeasure()、onDraw()。onMeasure负责对当前View的尺寸进行测量,onDraw负责把当前这个View绘制出来。当然了,你还得写至少写2个构造函数:转载 2016-12-08 22:59:04 · 430 阅读 · 0 评论 -
FragmentPagerAdapter与FragmentStatePagerAdapter区别
在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,我希望能够通过调用 mAdapter.notifyDataSetChanged() 来触发 Fragment 页面使用新的数据调整或重新生成其内容,可是当我调用 notifyDataSetChange转载 2016-11-26 23:05:15 · 294 阅读 · 0 评论 -
TBS服务
用Android自带的WebView组件,做过一些较复杂应用的人应该都会发现,这个自带的组件很多时候真是让人无力吐嘈,主要理由有二:Android中的WebView组件,内存泄漏的问题一直没有非常有效的解决方案,让程序猿们痛不欲生。Android中的WebView组件,在4.4以前的版本是WebKit的内核,4.4以后才换成chromium的内核,同时鉴于Google版本帝的风格,因此也导转载 2016-11-26 23:14:44 · 2379 阅读 · 0 评论 -
Mk文件语法规则
Makefile 语法分析 第一部分VERSION = 2 给变量VERSION赋值 PATCHLEVEL = 6 给变量PATCHLEVEL赋值 SUBLEVEL = 22 给变量SUBLEVEL赋值 EXTRAVERSION = .6 给变量EXTRAVERSION赋值 NAME = Holy Dancing Manatees, Batman! 给变量NAME赋值原创 2017-08-01 09:43:25 · 7004 阅读 · 0 评论 -
AOSP mk文件总结
1 Build LayersBuild Layers描述的是产品的硬件配置情况,据此make时选择不同的配置和模块。按照从上到下的顺序,Build Layer分成4层。Layer sample NoteArch arm, x86 处理器的种类Board - 板子类型的代号Device - device配置的类型代号Product -原创 2017-07-31 17:00:41 · 2348 阅读 · 0 评论 -
安卓官方编码规范
Java 语言规则Android 遵循标准 Java 编码规范以及下文所述的其他规则。请勿忽略异常开发者可能会倾向于编写完全忽略异常的代码,例如:void setServerPort(String value) { try { serverPort = Integer.parseInt(value); } catch (NumberFor原创 2017-07-10 09:41:33 · 1256 阅读 · 0 评论 -
ubantu 16.04 编译报错 clang: error: linker command failed with exit code
最近在ubantu16.04的服务器上编译5.1源码出错 尝试了几种解决办法 首先在根目录 中找到 /art/build/Android.common_build.mk,[java] view plain copy"font-size:18px;"># Host. ART_HOST_CLANG原创 2017-07-11 09:30:33 · 3349 阅读 · 0 评论 -
5.1 Launcher3 修改总结
最近比较忙 有段时间没写博客了 趁着有空 把最近修改launcher的心得总结一下一、 修改和替换特定应用图标 1 allApps界面 allApps界面就是所谓的二级菜单,抽屉。 Launcher3 生成二级菜单的图标分为初次加载和初次加载之后。 初次加载时 修改 IconCache.java 中的 updateCacheAndGetCont原创 2017-04-26 20:26:12 · 2468 阅读 · 0 评论 -
RxJava解决发射事件速度和消费事件速度不一致导致rx.exceptions.MissingBackpressureException
BackpressureRx 中的数据流是从一个地方发射到另外一个地方。每个地方处理数据的速度是不一样的。如果生产者发射数据的速度比消费者处理的快会出现什么情况?在同步操作中,这不是个问题,例如:// ProduceObservable producer = Observable.create(o -> { o.onNext(1); o.onNext(2);转载 2016-12-16 19:04:19 · 4896 阅读 · 1 评论 -
Rxjava Subject分析
Subject = Observable + Observer看看官方的描述:Subject可以看成是一个桥梁或者代理,在某些ReactiveX实现中(如RxJava),它同时充当了Observer和Observable的角色。因为它是一个Observer,它可以订阅一个或多个Observable;又因为它是一个Observable,它可以转发它收到(Observe)的数据,也转载 2016-11-27 23:20:24 · 591 阅读 · 0 评论 -
打造属于自己的RxBus
RxBus通过RxJava实现Rxbus。相信大家已经非常熟悉EventBus了。最近正在学习Rxjava,如果在项目中已经使用了Rxjava,使用RxBus来代替EventBus应该是不错的选择。RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。转载 2016-11-27 23:07:30 · 720 阅读 · 0 评论 -
RxBus的实现及简单使用
RxJava目前已经很火了,如果你尚未了解请看这里。对于RxJava这里不多做介绍。RxBus并不是一个库,而是一种模式。相信大多数开发者都使用过EventBus,作为事件总线通信库,如果你的项目已经加入RxJava和EventBus,不妨用RxBus代替EventBus,以减少库的依赖。一、添加RxJava和RxAndroid依赖 //RxJava and RxAndroi转载 2016-11-27 22:56:42 · 875 阅读 · 0 评论 -
EventBus源码解析
1、概述一般使用EventBus的组件类,类似下面这种方式:[java] view plain copypublic class SampleComponent extends Fragment { @Override public void onCreate(Bundle savedInst转载 2016-11-27 00:05:10 · 368 阅读 · 0 评论 -
EventBus实战
1、概述最近大家面试说经常被问到EventBus,github上果断down了一份,地址:https://github.com/greenrobot/EventBus,的确是个不错的框架,主要用于事件的发布和订阅。EventBus定义:是一个发布 / 订阅的事件总线。这么说应该包含4个成分:发布者,订阅者,事件,总线。那么这四者的关系是什么呢?很明显:订阅者转载 2016-11-27 00:00:58 · 473 阅读 · 0 评论 -
Android mvp 架构的自述
最近发现再也无法忍受越来越臃肿的Activity代码,越来越来混乱的Activity层的代码,投入到了MVP的怀抱。目前来看MVP的架构还是很适合Android的,在这里记录一下一点心得,希望都给想用MVP的人一点帮助。老的MVC架构刚开始接触Android的时候会觉得Android的整个代码架构就是一个MVC。M : 业务层和模型层,相当与javabean和我们的业务请求转载 2016-11-22 14:48:37 · 437 阅读 · 0 评论 -
理解23种设计模式
面向对象的六大原则首先,我们为什么要学习设计模式。主要是这些模式是前人总结的经验,使用这些模式能让我们的程序更健壮、更稳定、容易扩展等等优点。在编写面向对象程序时,我们需要遵循以下6个原则,能让我们的程序维护起来更轻松~(当然还有其它好处)。1 单一职责原则 单一原则很简单,就是将一组相关性很高的函数、数据封装到一个类中。换句话说,一个类应该有职责单一。2 开闭原则转载 2016-12-04 23:29:32 · 858 阅读 · 0 评论 -
解决 使用FragmentTabHost 和 viewpager时编译器报错 FragmentManager is already executing transactions
这几天写的项目里 使用了FragmentTabHost 加Fragment 嵌套viewpager的模式在运行项目的时候 点击tab切换到装有viewpager的那一栏时,报错查看代码在装有viewpager的那个fragment里 这行代码出了问题manager = getFragmentManager();我尝试把它改为m原创 2016-09-24 20:12:10 · 5671 阅读 · 4 评论 -
ANDROID自定义视图——onMeasure流程,MeasureSpec详解
简介:在自定义view的时候,其实很简单,只需要知道3步骤:1.测量——onMeasure():决定View的大小2.布局——onLayout():决定View在ViewGroup中的位置3.绘制——onDraw():如何绘制这个View。而第3步的onDraw系统已经封装的很好了,基本不用我们来操心,只需要专注到 1 ,2两个步骤就中好了。转载 2016-09-08 16:40:44 · 322 阅读 · 0 评论 -
Android 自定义View (一)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章。先总结下自定义View的步骤:1、自定义View的属性2、在View的构转载 2016-09-07 16:41:44 · 291 阅读 · 0 评论 -
理解MVP设计模式
版权声明:转载请注明本文出自远古大钟的博客(http://blog.csdn.net/duo2005duo),谢谢支持!目录(?)[+]转载请注明本文出自远古大钟的博客(http://blog.csdn.net/duo2005duo),谢谢支持!简介MVP是MVC的衍生版本,跟MVC类似,但是在Android中更适用,也分三层: M转载 2016-09-16 11:12:52 · 2327 阅读 · 1 评论 -
屏幕适配
屏幕大小尺寸pxdpMDPI480*320480 * 320HDPI960*540640*360XHDPI1280*720640*360XXHDPI1920*1080640*360XXXHDPI2560*转载 2016-09-11 10:13:13 · 372 阅读 · 0 评论 -
如何优化你的布局层级结构之RelativeLayout和LinearLayout及FrameLayout性能分析
先看一些现象吧:用Android studio,新建一个Activity自动生成的布局文件都是RelativeLayout,或许你会认为这是IDE的默认设置问题,其实不然,这是由 android-sdk\tools\templates\activities\EmptyActivity\root\res\layout\activity_simple.xml.ftl 这个文件事先就定好了的,也就是说这转载 2016-09-10 11:15:53 · 641 阅读 · 0 评论 -
JNI入门
1. NDK简介Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”1.1 NDK产生的背景Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不转载 2016-05-23 11:57:41 · 308 阅读 · 0 评论 -
post和get的区别
post 地址栏不会出现一大串?bjnghfgreygt这样的东西如果是get,就会出现了1、Get 方法通过 URL 请求来传递用户的数据,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.mdm.com/test.asp?name=asd&password=sad[/url],数据都会直接显示在 u转载 2016-05-23 11:56:31 · 331 阅读 · 0 评论 -
HTTP 方法:GET 对比 POST
两种最常用的 HTTP 方法是:GET 和 POST。什么是 HTTP?超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。HTTP 的工作方式是客户机与服务器之间的请求-应答协议。web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包转载 2016-05-23 11:55:58 · 547 阅读 · 0 评论 -
Activity跳转Flag详解
Android 的一个特色就是 application A 的 activity 可以启动 application B 的 activity,尽管 A 和 B 是毫无干系的,而在用户看来,两个场景紧密联系,视觉上二者构成了一个整体。Android 就是把这种误觉定义为 Task,它既不是 class,也不是 AndroidMainifest.xml 中的一个元素。从表现上看 Task 就像是一个转载 2016-05-21 15:34:09 · 480 阅读 · 0 评论 -
AndroidStudio快速生成Selector.xml
我们知道在日常Android开发之中最常见的两款IDE便是eclipse和基于IntelliJ构建的Android Studio了。随着Android Studio的不断完善。越来越多的开发者已经慢慢的从笨重的eclipse逃离。本篇博文主要搜集目前两款主流的IDE插件,为扩充功能更好的开发做准备。我将插件分类为两大块,相信很多有经验的人不用想已经知道了为什么这么区分了,那就是eclipse和转载 2016-05-13 12:58:06 · 8034 阅读 · 1 评论 -
深入浅出 Retrofit
Android 开发中,从原生的 HttpUrlConnection 到经典的 Apache 的 HttpClient,再到对前面这些网络基础框架的封装,比如 Volley、Async Http Client,Http 相关开源框架的选择还是很多的,其中由著名的 Square 公司开源的 Retrofit 更是以其简易的接口配置、强大的扩展支持、优雅的代码结构受到大家的追捧。也正是由于 Squ转载 2016-09-27 00:30:28 · 623 阅读 · 0 评论