摘要:1. 问题引入: 前面我们是使用方法 降低屏幕亮度(不常用) 和 替换theme,两者都是针对Activity的背景进行白天、夜间模式的交换,但是如果我们显示的是Html的内容,这个时候改怎么办? 分析:首先加载Html页面肯定是要用到WebView的,通过loadUrl的方法可以把html页面显示
阅读全文
摘要:1. 夜间模式 所谓的夜间模式,就是能够根据不同的设定,呈现不同风格的界面给用户,而且晚上看着不伤眼睛。特别是一些新闻类App实现夜间模式是非常人性化的,增强用户体验。 2. 我根据网上的资料 以及自己代码亲测,总结如下两种方法: (1)降低屏幕亮度 (2)替换theme 3. 夜间模式之 降低屏幕
阅读全文
摘要:1. 这里我们先从案例角度说明dispatchTouchEvent,onTouch,onTouchEvent,onClick逻辑顺序过程: (1)首先我们重写一个MyButton 继承自 Button,代码如下: (2)来到主布局文件activity_main.xml,如下: (3)测试MainAc
阅读全文
摘要:1. 首先说一下:行锁 和 表锁 主要是针对锁粒度划分的。 一般分为:行锁、表锁、库锁 (1)行锁:访问数据库的时候,锁定整个行数据,防止并发错误。 (2)表锁:访问数据库的时候,锁定整个表数据,防止并发错误。 行锁 和 表锁 的区别: 表锁: 开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概
阅读全文
摘要:1. HashMap 的线程不安全性的体现: 主要是下面两方面: (1)多线程环境下,多个线程同时resize()时候,容易产生死锁现象。即:resize死循环 (2)如果在使用迭代器的过程中有其他线程修改了map,那么将抛出ConcurrentModificationException,即:fai
阅读全文
摘要:1. HashMap的实现原理之 HashMap数据结构: HashMap是对数据结构中哈希表(Hash Table)的实现, Hash表又叫散列表。Hash表是根据关键码Key来访问其对应的值Value的数据结构。 它通过一个映射函数把关键码Key映射到Hash表中一个位置来访问该位置的值Valu
阅读全文
摘要:1. 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就必须先得到返回值了。 换句话话说,调用者主动等待这个"调用"的结果。 对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。 2. 异步: 所谓异步,"调用"在发出之后
阅读全文
摘要:1. Hashtable: (1)是一个包含单向链的二维数组,table数组中是Entry<K,V>存储,entry对象; (2)放入的value不能为空; (3)线程安全的,所有方法均用synchronized修饰; 2. HashMap: (1)相当于Hashtable的升级版本; (2)可以放
阅读全文
摘要:1. ConcurrentHashMap的初始化: 下面我们来结合源代码来具体分析一下ConcurrentHashMap的实现,先看下初始化方法: CurrentHashMap的初始化一共有三个参数: 一个initialCapacity,表示初始的容量; 一个loadFactor,表示负载参数; 最
阅读全文
摘要:1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁
阅读全文
摘要:1. 内部拦截法: 父容器不拦截事件,所有的事件全部都传递给子元素,如果子元素需要此事件就直接消耗掉,否则就交给父容器进行处理。 这种方法和Android中的事件分发机制不一样,需要配合requestDisallowInterceptTouchEvent方法才能正常工作,使用起来较外部拦截法稍显负责
阅读全文
摘要:1. 外部拦截法: 点击事件通过父容器拦截处理,如果父容器需要就拦截,不需要就不拦截。 这种方法比较符合事件分发机制。外部拦截法需要重写父容器的onInterceptTouchEvent方法,在内部做相应的拦截即可。 这种方法的伪代码,如下: (1)在onInterceptTouchEvent方法之
阅读全文
摘要:1. 引入: 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。 那到底是为什么会产生滑动冲突呢 ? 答:其实在界面中只要存在内外两层同时可以滑动,这个时候就会产生滑动冲突。 2. 常
阅读全文
摘要:1. MVP模式简介: MVC模式相信大家肯定是比较熟悉的:M-Model-模型、V-View-视图、C-Controller-控制器。 MVP作为MVC的演化版本,那么类似的MVP所对应的意义:M-Model-模型、V-View-视图、P-Presenter-表示器。 从MVC和MVP两者结合来看
阅读全文
摘要:1. 这个图片加载框架网友很多都已经使用过,而且分析也很到位,这里我就不写了,直接引用别人,尊重别人的劳动成果。 2. 参考如下: (1)Android 开源框架Universal-Image-Loader完全解析(一) 基本介绍及使用 (2)Android 开源框架Universal-Image-
阅读全文
摘要:1. 首先通俗地说说我对MVC的理解: Model是负责干活的,它干的活主要是从数据库中获取需要的数据以及对获取的数据按照业务逻辑进行加工处理,至于为什么要干某件活,何时干某件活它一概不管,而这正是Controller的职责,Controller像个餐馆招待,接到食客的需求,马上传达给厨房,Mode
阅读全文
摘要:1. 引导页: 我们在安装某个软件首次运行时,大部分都会有一个引导页的提示,介绍软件新功能的加入或者使用说明等,支持滑动且下面会有几个圆点,显示共有多少页和当前图片的位置,类似如下效果: 2. 引导页具体实现功能如下: 可以左右滑动图片。 图片的索引圆点显示,看出当前图片所在的位置和图片的数量。 可
阅读全文
摘要:1. 分段控制(SegmentView) 首先我们先看看什么是SegmentView的效果,如下: 分段控制这个View控件是ios7的分段控制,和QQ消息页面顶部的效果一样,android没有这个控件,不过实现起来也比较简单,下面来实现这个样式,实现的样式最终效果如下: 2. SegmentVie
阅读全文
摘要:1. 引言: RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件,顺便复习一下观察者模式。 2. 最终目的 模拟ListView的setOnItemClickListener(
阅读全文
摘要:1. PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的。 2. PopupWindow使用的案例: (1)首先是我们弹出框的布局设计,如下: 布局效果图,如下: (2)主布局activity
阅读全文
摘要:1. 下面我们经常在APP中看到的圆角图片,如下: 再比如:微信聊天会话列表的头像是圆角的。 2. 下面分析一个Github的经典: (1)Github库地址: https://github.com/siyamed/android-shape-imageview (2)使用方法: >1. 添加依赖:
阅读全文