- 博客(1723)
- 收藏
- 关注
转载 Android遍历所有控件的递归和非递归实现
题目描述给出布局的根节点,要求不使用递归的方式将所有类型为Button的控件背景设置为红色。分析对于Android中的布局来说,有两种类型的节点,一种是ViewGroup布局,另外一种是View控件,按照类似树形结构来组织(注意,不是二叉树)。对于控件的遍历,可以转化为对树的遍历。对树的遍历有递归方式和非递归的方式,非递归方式又可以分为深度优先遍历和广度优先遍历。实现&...
2018-09-30 15:18:46 4233
转载 Android中颜色透明度对应16进制值
对应列表 <!--百分比-开头字母--> <!--100% —FF--> <!--95% — F2--> <!--90% — E6--> <!--85% — D9--> <!--80% — CC--> <!--75% — BF--> <
2018-01-19 15:22:37 1098 1
转载 Google推荐的图片加载库Glide于Picasso比较
英文原文 Introduction to Glide, Image Loader Library for Android, recommended by Google译文首发 http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0327/2650.html在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide
2018-01-04 17:03:33 829
原创 RecyclerView 滑动之后显示数据错乱
由于RecyclerView的onBindViewHolder()方法,只有在getItemViewType()返回类型不同时才会调用,这点是跟ListView的getView()方法不同的地方,所以如果想要每次都调用onBindViewHolder()刷新item数据,就要重写getItemViewType(),让其返回position,否则很容易产生数据错乱的现象。@Override
2017-12-27 18:51:36 15045 25
转载 Android 从源码的角度分析——为什么要用newInstance来实例化Fragment
最近在看Google技术文档的时候发现了一种新的方式来实例化Fragment,就是采用静态工厂的方式创建Fragment。我们在使用Android studio创建一个类的时候,选择New ->Fragment->Fragment(Blank)可以很直观的看到这种方式的写法:public class BlankFragment extends Fragment { pr
2017-12-27 16:22:32 963
转载 Android的IPC机制(七)—— Socket的原理简析与使用
综述 在前面的几篇文章中,我们介绍了许多在Android中有关进程间通信的方式,但都是在一个设备上进行的进程间通信,而这时候我们两个应用在不同的设备上的时候,在这个时候我们就不能通过前方介绍的那些方法来解决了。但是我们通过网络进行通信来处理这个问题。今天就来介绍一下Android中网络通信的其中一种方式——Socket。Socket翻译为中文为套接字,而现在套接字也成为了操作系统中的一部
2017-12-19 16:52:42 469
转载 Android的IPC机制(六)—— BroadcastReceiver的使用
综述 在Android的四大组件中除了ContentProvider能够用于进程间的通信外,还有一个也能够用于进程间的通信,那就是BroadcastReceiver。BroadcastReceiver翻译成中文为广播接收器,既然作为广播接收器,那么必然就有Broadcast。在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastRecei
2017-12-19 16:48:13 360
转载 Android的IPC机制(五)—— ContentProvider的使用
综述 对于前面一些的ipc过程都是Service与客户端进行通信。那么在不同应用之间ipc可以采用哪些方式呢?首先我们会想到ContentProvider,因为我们平时获取手机上的联系人,图片等等都是通过ContentProvider得到的。ContentProvider是Android的四大组件之一。翻译成中文为内容提供者,也就是可以将自己的数据提供给别的应用进行使用。那么我们现在就来
2017-12-19 16:47:26 375
转载 Android的IPC机制(四)—— Messenger的使用及源码分析
综述 在前面几篇中我们详细的介绍了AIDL的使用及原理。在这里我们感觉到AIDL的在使用过程中还是比较复杂的,那么有没有一种简单的方法来实现进程间的通信呢?当然是有的,那就是利用Messenger。Messenger翻译为信使,从他的名字就可以看出这个Messenger就是作为传递消息用的。那么我们就来看一下这个Messenger到底是如何使用的,以及在它内部是如何实现的。Mes
2017-12-19 16:46:19 291
转载 Android的IPC机制(三)——Binder连接池
综述 前两篇说到AIDL的使用方法,但是当我们的项目很大时,很多模块都需要用到Service,我们总不能为每一个模块都创建一个Service吧,这样一来我们的应用就会显得很笨重。那么有没有一种解决方案叫我们只需要创建一个Service,然后去管理AIDL呢?在任玉刚的《Android开发艺术探索》中给出了一个解决方案,那就是Binder连接池。在这里我们看一下他是怎么实现的。Bi
2017-12-19 16:44:59 425
转载 Android的IPC机制(二)——AIDL实现原理简析
综述 上篇说到AIDL的使用方法,我们不能仅仅只是满足对AIDL的使用,那么对于AIDL到底是如何实现的呢?为什么我们只是创建一个AIDL文件,系统就会为我们自动生成一个Java文件,那么这个Java文件里面到底包含了哪些内容呢?我们今天就来研究一下。AIDL实现原理 在这里我们首先看一下AIDL是怎么实现的。当我们创建一个Service和一个AIDL接口的时候,然后创
2017-12-19 16:42:07 319
转载 Android的IPC机制(一)——AIDL的使用
综述 IPC(interprocess communication)是指进程间通信,也就是在两个进程间进行数据交互。不同的操作系统都有他们自己的一套IPC机制。例如在Linux操作系统中可以通过管道、信号量、消息队列、内存共享、套接字等进行进程间通信。那么在Android系统中我们可以通过Binder来进行进程间的通信。当然除了Binder我们还可以使用Socket来进行进程间的通信。
2017-12-19 16:38:45 494
转载 AndroidStudio Mac OS X 10.5+ 快捷键整理
一、代码移动1. option + ⬆️ / ⬇️ ---------- 选中代码2. option + shift + ⬆️ / ⬇️ ---------- 上下移动代码3. command + D ---------- 复制当前行到下一行4. command + X ---------- 剪切5. command + Delete ---------- 删除行6.
2017-12-19 15:40:02 938
转载 巧用Android多进程,微信,微博等主流App都在用
1前言对于进程的概念,来到这里的都是编程修仙之人,就不再啰嗦了,相信大家倒着、跳着、躺着、各种姿势都能背出来。2为什么使用多进程?相信很多同学在实际开发中,基本都不会去给app划分进程,而且,在Android中使用多进程,还可能需要编写额外的进程通讯代码,还可能带来额外的Bug,这无疑加大了开发的工作量,在很多创业公司中工期也不允许,这导致了整个app都在一
2017-12-14 15:52:50 1166 1
转载 从一道面试题来认识java类加载时机与过程
1 开门见山以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static i
2017-12-13 17:52:45 839
转载 Android关于service中的耗时操作
原文链接:http://blog.csdn.net/zartzwj/article/details/20864497由于Service和Broadcast一样,都运行在主线程中,所以在这两个里面我们无法做一些长时间的耗时操作,也就是说,如果我们有一个后台服务,是每隔一段时间请求一次服务器,类似于心跳服务,只是没有心跳服务那么频繁,例如每2个小时执行一次连接服务器操作,这样的话,我们
2017-12-11 17:56:48 2614
转载 可能是东半球最全的RxJava使用场景小结
一、Scheduler线程切换这种场景经常会在“后台线程取数据,主线程展示”的模式中看见[html] view plain copyObservable.just(1, 2, 3, 4) .subscribeOn(Schedulers.io()) // 指定 subscribe() 发生在 IO 线程
2017-10-13 16:26:55 528
转载 Android Frameworks系列(二) 彻底弄懂startActivity
在Android Frameworks系列(一) startService启动 一文中我们介绍了startService启动的过程,和startService一样,startActivity也是以ActivityManagerService为核心工作的。原理也差不多,不过要比startService复杂,因为Activity的生命周期更多,并且还涉及UI方面的工作。为了分析包括zygote孵化目标
2017-09-22 19:32:28 845
转载 (译)使用CoordinatorLayout处理滚动
原文链接:Handling Scrolls with CoordinatorLayout概述CoordinatorLayout可以完成很多Google的 Material Design滚动效果。目前,框架中提供了几种方法让它工作并且你不需要自己写动画代码。这些效果包括:为Snackbar提供空间向上和向下滑动Floating Action Button。
2017-09-19 21:02:44 3105
转载 CoordinatorLayout与滚动的处理
英文原文:https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout 这篇文章专门讲解和CoordinatorLayout相关的知识点,这也是Design Support Library中最重要与最难的部分。概览CoordinatorLayout 实现了多种Material De
2017-09-19 18:46:05 421
转载 提高代码质量-工具篇
在这片文章中,我将从工具使用的角度上讲述如何提高 Android 代码质量,这些自动化工具包括 Checksytle、Findbugs、PMD 和 Android Lint. 团队中代码意识不一致,水平参差不齐,代码风格迥异,定下的规范也是熟视无睹。这时候就需要借助工具的力量,利用工具自动地帮助我们检测代码,避免代码恶习,预防蚁穴坏堤。0.1 Fork 这个例子工程我强烈建议你
2017-09-18 16:47:32 410
转载 android7.0应用安装失败的问题
背景APK Signature Scheme v2官方介绍Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Sche
2017-09-15 14:00:57 5755
转载 Android屏幕适配dp、px两套解决办法
“又是屏幕适配,这类文章网上不是很多了吗?”我也很遗憾,确实又是老问题。但本文重点对网上的各种方案做一个简短的总结,和具体使用方法。若想了解具体android设备适配的前世因果,请阅读hongyang文章:http://blog.csdn.net/lmj623565791/article/details/45460089据我的总结,屏幕适配可以有两种方法适配,d
2017-09-12 12:10:42 623
转载 RecyclerView滑动到指定Position的方法
Question最近在写 SideBar 的时候遇到一个问题,当执行 Recyclerview 的 smoothScrollToPosition(position) 的时候,Recyclerview 看上去并没有滚动到指定位置。Analysis当然,这并不是方法的bug,而是 smoothScrollToPosition(position) 的执行效果有三种情况,需要区分。·目标p
2017-09-12 09:56:44 4709 2
转载 Android使用VideoView播放网络视频,获取网络视频缩略图
`/** * 本实例演示如何在Android中播放网络上的视频,这里牵涉到视频传输协议,视频编解码等知识点 * @author Administrator *Android当前支持两种协议来传输视频流一种是Http协议,另一种是RTSP协议 *Http协议最常用于视频下载等,但是目前还不支持边传输边播放的实时流媒体 *同时,在使用Http协议 传输视频时,需要根据不同的网络方式
2017-09-11 17:06:39 1406
转载 AndroidRecyclerviewGridLayoutManager列间距 - Android Recyclerview GridLayoutManager column spacing
解决方案:RecyclerViews支持ItemDecoration的概念:特殊补偿和绘画在每个元素。见这个答案,您可以使用然后通过添加原文:RecyclerViews support the concept of ItemDecoration: special offsets and drawing around each element. As seen in this a
2017-08-29 20:21:45 1800
转载 如何自定义RecycleView item的间距
引言在以前使用ListView和GridView时,设置item之间的间距还是相对比较简单的,因为它们的基本属性里面Android已经定义好了,可以直接设置属性值即可。但Google为了通用性和灵活性(至少我是这么认为-.-),对于V7包中的RecycleView来说,则需要自己实现ItemDecoration类的getItemOffsets(Rect outRect, View view
2017-08-29 16:49:17 673
转载 Android仿打字机打字效果
最近不太忙,看了看js方面的知识,偶然看到一个打字机打字的效果,感觉挺棒的,就打算用Android搞一个试试.为了不造重复的轮子,先在度娘上找了找,果然有前辈已经写过这方面的文章.所以参考了一下,并且加入了一些自己的想法,做了一些优化.先来看一下效果吧:图片可能有点掉帧,实际效果更好一些.一、简单分析看到这个效果,想一想其实并不太难,做一个定时器,然后一点一点的
2017-08-22 16:12:07 1193
转载 干货分享:分析Android应用使用的技术框架和开源库
App应用本质上是一个apk包, 即一个zip包, 可以直接显示其中的内容. 通过apk文件, 我们可以获知apk的版本信息, so库和第三方库, 并了解一些主流公司的应用框架. 分析工具主要是ApkTool和ClassyShark, 本人比较喜欢Shark工具. 我使用ClassyShark分析一下美团的框架, 也可以按照这个原理, 分析其他App的基本架构.Shark让我们看看,
2017-08-02 17:17:44 462
转载 Android键盘面板冲突 布局闪动处理方案
起源,之前在微信工作的时候,为了给用户带来更好的基础体验,做了很多尝试,踩了很多输入法的坑,特别是动态调整键盘高度,二级页面是透明背景,魅族早期的Smart bar等, 后来逐一完善了,考虑到拥抱开源,看业界还是有很多应用存在类似问题。就有了这个repo之前有写过一篇核心思想: Switching between the panel and the keyboard in Wech
2017-08-02 16:09:39 2390
原创 Android BaseAdapter
public abstract class BaseAdapterT> extends android.widget.BaseAdapter { private ListT> mDataList; public BaseAdapter(ListT> list) { mDataList = list; } @Override public
2017-08-02 15:13:03 404
转载 Android 在屏幕上打印LOG
Android开发中需要迅速定位问题,在android 屏幕上打印LOG,是一个很好的通道基本的思路:启动LogService读取指定log,使用WindowManager展示到屏幕上直接上代码public class LogService extends Service { private ListView listview; private
2017-08-02 12:03:14 4099
转载 安卓5.1源码解析 : RecyclerView解析从绘制流程,ViewHolder复用机制,LayoutManger,ItemAnimator等流程全面讲解
最近一直在研究安卓中几个常用控件的源码,希望能通过学习源码学习到google大牛在封装一些复杂view的思想,为以后自己造轮子提供更好的思路.RecyclerView是一个用户可以全面定制的组件,本文将全面分析RecyclerView的各种机制,包括viewholder复用机制,LayoutManager布局机制,ItemAnimatoritem动画等RecyclerView暴露给使用者的
2017-08-01 17:39:11 1351
转载 安卓5.1源码解析 : ListView解析 从绘制,刷新机制到Item的回收机制全面讲解
最近一直在研究关于安卓中常用控件的源码实现,也参考了不少文章,希望通过自己的总结加深一下记忆,我会从一个view的绘制流程去分析这个控件作为安卓中最常用的控件ListView,我觉很很有必要学习一下Google的大牛是如何实现这种比较复杂的控件,包括ListVIew的绘制流程,ListView的缓存机制,以及封装思想,对今后自己能早出更好的轮子有所帮助.注 : 所有的源码都是来自安
2017-08-01 17:37:55 437
转载 源码解析ListView中的RecycleBin机制
在自定义Adapter时,我们常常会重写Adapter的getView方法,该方法的签名如下所示:public abstract View getView (int position, View convertView, ViewGroup parent) 1此处会传入一个convertView变量,它的值有可能是null,也有可能不是null,如果不为null,我们就可以
2017-08-01 10:47:01 385
转载 Android ListView初始化简单分析
下面是分析ListView初始化的源码流程分析,主要是ListVIew.onLayout过程与普通视图的layout过程完全不同,避免流程交代不清楚,以下是一个流程的思维导图。 思维导图是顺序是从左向右,从上向下。一、 先看构造函数,上图中1.1就不分析了,主要是读取一些ListView参数,直接来看1.2 ViewGroup构造函数源码
2017-07-31 18:18:56 1691 1
转载 ListView中getChildAt(index)的使用注意事项
1.原理 在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。 注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项! 即取值范围在 >= ListView.getFirstVisibl
2017-07-31 16:49:23 897
转载 正确处理listview的position
当ListView包含有HeaderView或FooterView时,传入getView或者onItemClick的position是怎样的,这是个值得探讨的问题先列出错误的用法定义:[java] view plain copyprivate MyAdapter mAdapter; /** * 包含
2017-07-31 11:52:43 2818
转载 Android ListView工作原理完全解析,带你从源码的角度彻底理解
转自:http://blog.csdn.net/guolin_blog/article/details/44996879在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。
2017-07-31 11:31:07 279
转载 ListView回收机制相关分析
所用源码版本为最新的Android 4.4.2(API 19)。更新中…… ListView回收机制相关分析 11. ListView结构关系 12. RecycleBin类解析 32.1 RecycleBin变量 42.2 RecycleBin方法 43. RecycleBin的调
2017-07-31 11:24:02 391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人