- 博客(83)
- 资源 (14)
- 问答 (3)
- 收藏
- 关注
原创 【大揭秘】Android架构组件ViewModel来龙去脉
ViewModel是google官方的MVVM架构组件,目前已经集成到了最新的支持库中了,是MVVM架构的核心组件之一。不懂MVVM的请看之前的文章:(一)Android官方MVVM框架实现组件化之整体结构 网上看到的ViewModel的博文千篇一律,实在忍不了,自己写看了源码写了一篇,欢迎拍砖! ViewModel是存储UI相关数据并不会因为旋转而销毁的类。最为重要的就是Vi...
2018-04-22 00:12:57 15343 9
原创 Android玩转Bitmap随意裁剪支持碎片复用
Bitmap碎片复用任意操作开源库:https://github.com/Dawish/BitmapKit一、Bitmap庐山真面目Bitmap 并不是一个图片。最开始接触Android的人可能以为 Bitmap 就一个图片,比如我,哈哈哈,我最开始接触Android时就是如此认为。一句话总结: Bitmap 是一个实现了 Parcelable 接口的 final ...
2018-03-07 19:09:50 3370 1
原创 图文详解LinearLayoutManager填充、测量、布局过程
LinearLayoutManager并不是一个View,而是一个工具类,但是LinearLayoutManager承担了一个View(当然指的是RecyclerView)的布局、测量、子View 创建 复用 回收 缓存 滚动等等操作。一、回忆一下上一篇文章Android Render(三)supportVersion 27.0.0源码RecyclerView绘制流程解析已经说了 RecyclerV
2017-12-21 19:49:07 5909
原创 (二)Android官方MVVM框架实现组件化之ARouter串联各模块
作者: Dawish_大D 简书: http://www.jianshu.com/u/40e1f22c2c53 (一)Android官方MVVM框架实现组件化之整体结构 (二)Android官方MVVM框架实现组件化之ARouter串联各模块目前的项目结构图置顶:Demo的Github地址: https://github.com/Dawish/GoogleArchitectu
2017-11-28 22:46:57 2328 1
原创 (一)Android官方MVVM框架实现组件化之整体结构
目前的项目结构图置顶:Demo的Github地址: https://github.com/Dawish/GoogleArchitectureDemo一、google官方MVVM框架讲解我前面对比了MVC和MVP《两张图看懂Android开发中MVC与MVP的区别》,可以相对于MVC我们的MVP是有多优越,但是Android开发现在已经开始流行了MVVM,前不久google官方发布了MVVM的正式库。
2017-11-25 17:40:12 9428
原创 Android Render(四)supportVersion 27.0.0源码RecyclerView绘制流程解析
阅读者三篇Android绘制文章,会让你对理解Android绘制有帮助: - Android Render(一)Activity窗口构成和绘制解析 - Android Render(二)7.1源码硬件加速下draw绘制流程分析 - Android Render(三)supportVersion 27.0.0源码RecyclerView绘制流程解析RecyclerView的supportVers
2017-11-06 21:46:00 889
原创 Android Render(三)7.1源码硬件加速下draw绘制流程分析
分析从draw(Canvas canvas)和draw(Canvas canvas, ViewGroup parent, long drawingTime)两个方法入手:draw(Canvas canvas)和draw(Canvas canvas, ViewGroup parent, long drawingTime)方法从表面看来就是接受的参数不一样, 其实二期有一个先后顺序,从属关系,但是也要分
2017-11-01 17:22:58 1813
原创 Android Render(二)WindowManagerImpl的addview跟viewGroup的addview有什么不同?
首先我们要知道ViewManager接口:package android.view;public interface ViewManager{ //添加View 我们主要看在ViewGroup和WindowManagerImpl中的实现 public void addView(View view, ViewGroup.LayoutParams params); //更新Vi
2017-11-01 17:21:21 908
原创 Android Render(一)Activity窗口构成和绘制解析
一、Activity窗口构成这里我们会介绍到Activity、PhoneWindow、DecorView、ViewRootImpl、WindowManagerImpl、WindowManagerGlobal、ActivityThread和Surface,关于Activity窗口有很多方面可讲,我这里只侧重于Activity窗口的Render方面来讲解。先来两张张大家早已经烂熟于心的图:一个Activ
2017-10-13 14:48:40 1433
原创 Android IPC之Binder机制分析
原文链接: —Android IPC之Binder机制分析—更多精彩请点击: AIDL实现IPC详解——AIDL实现IPC详解一、 Android IPC方式选择1.1 IPC释意IPC:Inter-Process Communication,进程间的通信或跨进程通信。因为不同的进程是不能共享内存块的,所以进程之间的通信需要使用特别的方式。进程中的线程是可以共享内存的,就是多个线程可以操作或者可以
2017-09-02 13:11:25 1274 2
原创 两张图看懂Android开发中MVC与MVP的区别
看了很多文章,没有很好的文章能简明扼要的说清楚Android开发中MVC和MVP的区别。MVC很早就出来了,之前广泛用于JavaWeb开发中,MVC也可以用来开发Android,但是有些水土不服!1、MVC结构示意图 ————- 点击打开大图 ————-2、MVP结构示意图 ————- 点击打开大图 ————-好用的在线UML工具:https://www.processon.com/2、MVP与
2017-08-13 02:06:23 22780 10
原创 大话AOP与Android的爱恨情仇
1. AOP与OOP的区别平时我接触多的就是OOP(Object Oriented Programming面向对象)、AOP(Aspect Oriented Programming面向切面)这两种编程方式,我用自己的语言来解释一下这两者的区别: OOP: 专业术语: OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 面向对象侧重静
2017-08-10 15:09:32 3799 9
原创 Socket长连接Android端心跳机制实现
前面用golang写的socket服务端请移步:http://blog.csdn.net/u010072711/article/details/760821761. 把socket链接和心跳功能都放在一个Service中,为什么要放在Service中? 一般我们这种socket几乎是跟app的生命周期一样长,甚至更长。不管在不在Service中去完成操作,我们都得开异步线程,虽然Service并
2017-07-25 22:36:27 18392 11
原创 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器
MDPlayer万能播放器MDPlayer,基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器,可以播放本地和在线视频,可以浏览宅男杀手妹纸图片,UI设计遵循 Material Design。GitHub地址:https://github.com/Dawish/MDPlayerUI浏览:
2016-06-21 16:49:23 5760 10
原创 Android视频播放器实现小窗口和全屏状态切换
Android视频播放器实现小窗口和全屏状态切换实在是不好意思,楼下评论的兄弟久等了,这文章一直没写第一是没时间,第二是自己准备也不充足,最近才看了好几个Android视频播放器的开源项目,才对视频播放器的大小切换有点了解,就我目前的了解,视频播放器的大小屏切换基本有三个方案可选,下面我分别简单地讲一下,至于具体的实现我会给出github的链接,大家直接去看源代码。一、让播放器悬浮在Activity
2016-05-27 15:35:02 64736 42
原创 maven settings.xml配置多个镜像地址
maven conf/settings.xml配置多个镜像地址防止部分项目无法拉取: <mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror ...
2018-05-30 22:07:42 31445 2
原创 Android Render系列规划篇
了解Android Render 的原理和流程有助于我们自定义View、优化App性能,保证App高fps流畅运行,计划写一些列的Android Render博客。《Android Render之Activity》 讲解Android 窗口界面的构成和绘制关系。 主要有Activity 、PhoneWindow 、Window、WindowManager 、ViewRootImpl 和Decor
2017-10-09 15:34:57 3697
原创 记一次阿里复试
一、bitmap ImageView优化,从渲染谈,不要说基础的。二、fresco源码解读,原理说明。三、Android View绘制原理,不要说自定义view的三个步骤,说底层的。四、说说内存优化。五、说说卡顿解决。六、Android5.0之前和之后的在View渲染上有什么区别。
2017-09-22 10:20:16 838
原创 HTTP、TCP、UDP、Socket解读
1、导读记得上大学时上过《计算机网络基础》专门课,当时真是单纯善良无知,觉得我以后又不搞网络这一块的东西,没必要好好学习计算机网络这们课程,只要考试通过就行了。但是工作后的我发现,不管是我们是不是做软件开发,都会多多少少接触接触到计算机网络,因为计算机网络无处不在。平时生活中我们要接触到路由器,交换机,dns,ping,修改dns等等这些基本的操作,作为软件开发者,我们要接触到tcp、udp、htt
2017-09-16 22:54:22 1311
原创 Android IPC之AIDL看这一篇还不够
一、AIDL是什么?如果你想深入学习基于Binder通信的知识,请看我之前的文章: Android IPC之代理模式 Android IPC之Binder机制分析AIDL(Android Interface Define Language) 是IPC进程间通信方式的一种.用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication
2017-09-03 23:03:26 1106
原创 Android IPC之代理模式
1、代理模式代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理的好处:代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。 代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后 续处理。 上图的doSomethin
2017-08-27 15:28:26 937
原创 apk打包流程
1、导读.apk文件其实就是一个压缩文件,把文件的后缀改成.zip就可以用windows解压软件解压了。 这是一个apk文件改成zip文件解压后的样子:lib 文件夹里面存放的是so动态链接库,so动态链接库是不需要做处理做apk打包一些列压缩处理的。META-INF 签名文件夹,里面存放三个文件,有两个是对资源文件做的SHA1 hash处理,一个是签名和公钥证书。res 资源文件夹,里
2017-08-16 08:27:57 2126 1
原创 优雅的使用ActivityLifecycleCallbacks管理Activity和区分App前后台
一、ActivityLifecycleCallbacks接口介绍API 14之后,在Application类中,提供了一个应用生命周期回调的注册方法,用来对应用的生命周期进行集中管理,这个接口叫registerActivityLifecycleCallbacks,可以通过它注册自己的ActivityLifeCycleCallback,每一个Activity的生命周期都会回调到这里的对应方法。之前我们
2017-08-11 14:23:10 25063 5
原创 golang笔记(2)写一个简单的socket服务端
windows开发环境搭建http://blog.csdn.net/u010072711/article/details/72859731一、概述1.socket解读2.socket与HTTP关系3.socket与TCP/UDP关系4.HTTP与TCP/UDP关系二、第一步:绑定端口//创建socket文件描述符,绑定ip:port,改变socket状态为监听状态netListen, err :=
2017-07-25 18:53:30 5609 1
原创 java多线程同步(wait、notify)生产者消费者简单示例
一、为何写最为一个Android开发者,如果做得不够深入可能为不会去处理多线程同步的问题,稍微简单点可能使用一个线程池就可以搞定了,有关线程池的介绍可以参考我的另一篇文章:ExecutorService+LruCache+DiskLruCache用一个类打造简单的图片加载库 只是前段时间研究Android音视频硬解码,看到开源项目中用到了线程同步,就是在视频的YUV数据的暂存,和解码为视频并展示,
2017-07-16 21:19:27 2340 1
原创 golang笔记(1)windows开发环境搭建
决定你工资的不是语言,这句话当然是对的,不管做什么语言方面的开发,只要做得深入技术牛逼,工资都不会低。只是,我不想做一个只会开发Android应用的程序员,虽然我的Android技术处在一个中游水平,但是并不妨碍我拥抱golang这一门nice的语言。至于golang的优点有哪些,我这里就不介绍了。一、下载golang去 golang中国 下载一个适合你的版本: 二、path环境变量配置
2017-06-04 17:22:28 6848
转载 Android AOP三大金刚简介
原文地址:http://www.jianshu.com/p/be8a573f5810 相关文章:http://www.jianshu.com/p/dca3e2c8608a 大神要不是去了简书要不就是有自己的博客,CSDN日不就已?AOP是什么这里不多作解释了,个人理解总结下来就是相对于各个垂直深入的业务逻辑,每个业务逻辑深度的某个层面他们有需要共同的特征,此时对这种特征进行统一的处理,也就是所谓
2017-05-23 22:49:18 1025
原创 使用ip地址操作ADB命令
在我们平时的调试设备可能一般都是使用usb连接的方式,有时候觉得连接一根数据线很麻烦,干脆使用ip地址的方式来调试更方便,前提你的电脑跟手机是在同一局域网里面!,下面是详细步骤。 第一步:使用 USB 线将设备连接到主计算机。第二步: 输入adb命令 adb tcpip 5555设置当前设备以监听端口 5555 上的 TCP/IP 连接。默认的端口号是5555,要是有多个设备连接就会有多个
2017-02-19 20:48:27 14109
原创 Android核心知识点精华文章收藏
Android知识点精华文章收藏收藏一些介绍android核心知识点的优秀文章,做一下笔记,有兴趣的同学也可以共同参考:《通俗理解Android事件分发与消费机制》 – 伍歌歌 Android开发艺术探索《安卓自定义View教程目录》 – GcsSloop《git 命令常用总结》 – NewPanderKing《图解 Android 事件分发机制》 – Kelin《Android 消息处
2017-02-14 22:54:56 1139
原创 Android自定义View--Flyme6的Viewpager指示器
最新更新的Flyme6整体效果不错,动画效果增加了很多了,看了看flyme6的Viewpager指示器,觉得有点意思,就模仿写了一下,整体效果如下: github地址:https://github.com/Dawish/FlymeTabStripGradleallprojects { repositories { maven { url 'https://jitpack.i
2017-01-22 13:37:45 1436 3
原创 Android自定义View--用贝塞尔曲线实现一加多云天气
之前看到了一加天气,感觉做得还是很讨巧的,利用了传感器来控制动画效果,是使用Android手机的朋友还没有体验过,那就去试一下吧一加天气官方网站,下面是我简单地实现了一下的效果图: 代码很简单,就是用了五个二阶贝塞尔曲线,不断来回改变控制点的Y坐标不断重绘界面。package danxx.library.widget;import android.content.Context;import
2017-01-07 01:33:19 1994
原创 Android自定义View--用ViewGroup打造一个3D堆叠卡片容器
1. 功能描述目前只能支持三张图片,支持横竖屏模式,手指滑动翻页到下一张卡片,手指点击也可以切换到当前卡片,并且选中的卡片会在整个ViewGroup的最上层,会被放大,可以自定义放大动画的时长。最基本的Android自定义控件,大神就别看了。 来先看效果图吧: 支持竖屏模式 也支持横屏模式: 主要是想熟悉一下自定义控件的基本测量和布局方式,其实使用LinearLayout或者是Frame
2016-12-27 21:09:42 5853 5
原创 Android中postInvalidate()与postInvalidate(int left, int top, int right, int bottom)的区别
Android中postInvalidate()与postInvalidate(int left, int top, int right, int bottom)的区别
2016-12-26 21:21:27 838
原创 Java设计模式之 —— 装饰者(Decorator) — 点炒饭
Java设计模式之 —— 装饰者(Decorator) — 做炒饭下面会用做炒饭的例子来描述一下装饰者设计模式,装饰者设计模式比较适合用于拓展功能,我要做炒饭,最简单的就是油盐加米饭就可以做出炒饭,但是我们需要用装饰者的思想做出蛋炒饭,肉丝炒饭,培根炒饭。 要是不用设计模式,我们用java实现这个那就是写一个类,类里面放上各种食材(肉丝、鸡蛋、培根之类的),在我们给素炒饭添加添加食材的时候就用
2016-10-12 21:11:46 1648
原创 Android视频播放软解与硬解的区别
硬解,用自带播放器播放,android中的VideoView软解,使用音视频解码库,比如FFmpeg一、硬解码硬解:就是调用GPU的专门模块编码来解,减少CPU运算,对CPU等硬件要求也相对低点。软解需要CPU运算,变相加大CPU负担耗电增加很多。硬件解码是将原来全部交由CPU来处理的视频数据的一部分交由GPU来做,而GPU的并行运算能力要远远高于CPU,这样可以大大的降低对CPU的负载,CPU
2016-09-02 14:36:42 35560 6
转载 java内存分配和String类型的深度解析
String是是安全的么?String创建后其值可以改变么?下面会一一解答。 原文出处:http://my.oschina.net/xiaohui249/blog/1700131、摘要:从整体上介绍java内存的概念、构成以及分配机制,在此基础上深度解析java中的String类型,从内存分配情况来解析String对象的特性。2、引题:在java语言的所有数据类型中,String类型是比较特殊
2016-09-02 12:34:16 1180
原创 Android圆角图片最简单的实现方法详解
在平时的开发中,我们在显示图片是有时候需要显示圆角图片,我们应该都知道圆角显示肯定是更加耗费内存和性能,会导致图片的过度绘制等问题。但是有时候产品的设计就是这样,我们开发也不得不做,本篇文章讲一下最基本的圆角图片实现方法。
2016-07-30 16:22:26 4936 5
原创 Android检测View的可见性
Android中我们经常会用到判断View的可见行,当然有人会说View.VISIBLE就可以了,但是有时候这个真是满足不了,有时候我们为了优化,在View滚到得不可见的时候或者由于滚到只显示了部分内容的时候不做某些操作,View.VISIBLE这个时候是满足不了的。1. onWindowVisibilityChanged检测滚到导致View可见或者不可见比如在 ScrollView(Recycle
2016-07-15 10:50:45 26490 9
原创 RecyclerView之ViewHolder封装实现点击、长按、headerView和多选功能
多选效果图:BaseRecyclerViewHolder类:package com.danxx.brisktvlauncher.adapter;import android.animation.AnimatorSet;import android.animation.ObjectAnimator;import android.support.v7.widget.RecyclerView;imp
2016-07-11 19:16:13 2272
ijkplayer_demo.apk
2016-05-10
apk加壳demo,对包含布局xml和图片资源文件的apk加壳
2016-03-22
Android APP一段时间无操作显示屏保Demo
2015-11-29
Android SwipeRefreshLayout下拉刷新加载WebView
2014-08-22
Android SwipeRefreshLayout下拉刷新加载WebView网页
2014-08-22
安卓蓝牙聊天源代码,亲测可用
2014-07-03
eclipse项目导入android studio后运行按钮是灰色的,无法运行起来???
2015-07-15
sipdroid怎么实现视频通话?
2013-11-20
android中用什么方法解析xml文件速度快?
2013-10-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人