4 范二er

尚未进行身份认证

暂无相关简介

等级
TA的排名 5w+

SQLite IllegalStateException 的隐蔽 bug 修复

摘要:java.lang.IllegalStateException: Couldn’t read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.发生场景:查询数据库报错日志如下: java.l

2018-01-20 14:35:45

Android中的Window、WindowManager以及悬浮框视频播放的实现

摘要:近日看公司直播项目,其中有一个功能就是退出某房间之后,直播界面会以悬浮窗的形式出现,并且可以拖动悬浮窗到界面中任意位置,点击悬浮框之后,又可以回到房间中继续观看直播。现在这个功能在主流的直播或者视频类软件中都可以看到,比如:某鱼、某猫、某珠、某牙、某tube。当然了,某tobe当中的悬浮窗效果更佳炫酷,可以炫酷地从悬浮框中将视频主界面慢慢拖动出来,具体效果下载某tube就能看到。这篇文章就记

2018-01-20 14:32:24

View 的工作流程---结合HenCoder教程和《Android开发艺术探索》的总结

摘要:一直关注 Hencoder 的教程,前阵子刚好出了一期 View 的工作流程系列,然后结合《Android开发艺术探索》相关章节,做一下笔记。原文发表于本人的个人博客—–记录一个刚入职场的新人的学习过程申明:文中 draw过程 这一小节,是摘抄自 HenCoder Android 开发进阶:自定义 View 1-5 绘制顺序 ,详细内容请点击链接查看。MeasureSpecMeasureSp

2017-11-25 13:25:30

Android官方TODO-MVP项目分析(上)---View 层 Presenter 层以及 Contract 分析

摘要:最近看了一下 google 官方的 sample ,做的是一个 TODO 应用,使用的是 MVP 模式,之前笔者也学习了一段时间的 MVP,前面写了几篇文章记录学习过程,也有一些思考,最后呈现出来的问题就是 Presenter 层臃肿问题,以及 View 层接口难以管理的问题。比方说 View 层,它是负责 UI 的更新工作,我们希望它里面都是 showXXXZZZ(@Nullable Par

2017-11-14 09:52:38

Android当中的MVP模式(七)终篇---关于对MVP模式中代码臃肿

个人博客:CODE FRAMER BIGZ MVP系列文章配套DEMO Android 当中的 MVP 模式(一)基本概念 Android 当中的 MVP 模式(二)封装 Android 当中的 MVP 模式(三)基于分页列表的封装 Android 当中的 MVP 模式(四)插曲-封装 OkHttp Android 当中的 MVP 模式(五)封装之后的 O

2017-11-05 21:33:48

Android当中的MVP模式(六)View 层 Activity 的基类--- BaseMvpActivity 的封装

个人博客地址 :CODER FRAMER BIGZ摘要:使用封装之后的 MVP 模式实现一个新的界面,也就是 View 层,那么就需要去实现 IBaseView 接口,可能还需要针对当前要实现的界面情况,在 IBaseView 的基础之上派生出一个新的接口 IXxxView,之前的 SohuAlbumInfoActivity 用于展示搜狐电视剧主要信息的 View 就是这种情况,由 IBaseVie

2017-11-05 20:50:48

Android当中的MVP模式(五)封装之后的OkHttp工具在Model层

个人博客地址 :CODER FRAMER BIGZ摘要:在上一篇中对 OkHttp 进行了简单的封装,但是没有使用到这个系列当中的 Demo 里面,这一章就使用上一篇封装的 OkHttp 工具,替换掉之前 Demo 里面的 Model 层的网络请求.并且之前的部分接口方法都没有使用,比如说 IBasePresenter 接口中的 HashMap<String, String> getParams()

2017-11-05 20:50:09

Android当中的MVP模式(四)插曲-封装OkHttp

个人博客地址 :CODER FRAMER BIGZ摘要:前两篇中使用的网络请求工具是 OkHttp ,并没有经过封装,都是简单的使用 get 请求,并且将错误全部都抛到上层去解决了, 这无形之中增加了上层的编码复杂度,即使要抛向上层,起码也要给一个 errorCode 或者是 errorMsg 吧,所以这边文章就针对 OkHttp 进行封装,然后将封装之后的工具使用到上一小结的 Demo 之中。

2017-11-05 20:49:29

Android当中的MVP模式(三)基于分页列表的封装

摘要:在上一篇中对MVP模式进行了封装,然后通过封装之后的类,实现了一个网络请求,但是请求到网络数据之后,就直接展示到了 View 层,并没有其他的操作,然而我们在开发过程中, 经常会用到分页加载,一般在滑动控件向上滚动,加载更多事件触发是调用,并且这个过程设计到两个参数,一个是 PageIndex :页码;一个是 PageSize 一页数据的大小, 分页加载就是通过在某一具体事件触发时,调用修改这

2017-11-05 20:48:47

Android 当中的 MVP 模式(二)封装

Android 当中的 MVP 模式(二)封装个人博客地址 :CODER FRAMER BIGZ在Android当中的MVP模式(一)基本概念中,用了一个简单的的登录Demo展示了一下 MVP 模式的基本姿势,虽然项目结构是更加清晰了,但是代码量明显增多了,原来的网络请求操作只用 1 个类可以搞定,现在需要 4 个类,并且每当有不同作用的 model 出现时,我们就需要相应的为他们添加 presen

2017-11-05 20:47:54

Android当中的MVP模式(一)基本概念

Android当中的MVP模式(一)基本概念1. 为什么要使用MVP在传统的Android开发中,我们一般是使用MVC模式进行开发的。1.1 传统MVC模式介绍:View: 视图层,对应xml文件Controller: 控制层,对应Activity和Fragment层,进行数据处理Model:实体层,负责获取实体数据采用MVC模式的一个最大的弊端就是xml作为View层视图能力实在太弱,所以

2017-11-05 20:46:42

AsyncTask浅析

前言从去年秋招到今年的春招,最后确定工作单位,可真是忙忙碌碌的一年,在时间跨度一年的找工作中,自己收获还是挺多的,本来想在毕业前夕,想写点什么东西纪念下这段时光的,但是可能还是因为自己道行不够吧,始终不能很好的记录下大学四年和一年的求职之路,所以此处还是暂时跳过。希望能在毕业一年后,再好好总结。 目前已经到上海来了,下周一就正式入职,充满了未知和挑战,自己还是挺兴奋的,趁这几天有时间,先复习一下一

2017-07-01 15:39:22

算法题:二叉树A是否包含二叉树B的拓扑结构

1. 题目对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;

2017-03-13 16:19:35

算法题:二叉树打印

1.题目有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode r

2017-03-13 14:37:08

Java-Integer-int面试题

碰到过几次,然后在刷题的时候又碰到了,就记录一下。 归纳啊总结成一张图

2017-02-28 09:13:54

关于try-catch-finally-return语句的执行顺序

直接贴代码main函数 public static void main(String[] args) { System.out.println("=============NoException=================="); System.out.println(noException()); System.out.println("===

2017-02-16 18:40:51

剑指Offer---面试题37:两单链表中第一个公共节点

一 题目输入两个链表,找出它们的第一个公共结点。public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}二 思路假设单链表1表长n, 单链表2表长m;思路1:遍历单链表1(表长n),每遍历一个节点就循环遍历单链表2(表长m)

2017-02-16 12:15:58

剑指Offer---面试题36:数组中的逆序对

一.题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 例如:{7,5,6,4},一共存在五个逆序对:{7,5},{7,6},{7,4},{5,4},{6,4};二.分析思路1:显而易见,从头到尾扫描数组,没扫描到一个数字,就拿去和后面所有的数组进行比较,两个for循环,解决问题,算法时间复杂度为o(n^2),思路2:

2017-01-11 15:28:55

剑指Offer---面试题35:第一个只出现一次的字符

一.题目在一个字符串(1二.分析思路1: 从头到尾的扫描字符串,每扫描到一个字符,就和后面的字符进行比较,如果后面的字符串中没有出现相同的字符,那么该字符就是只出现一次的第一个字符,返回此时外层for循环的循环变量i,就是该字符的位置;时间复杂度:o(n)^2思路2: 1. 构造一个哈希表,Chatacteer作为key,Integer'作为value,分别表示字符

2017-01-10 15:13:54

剑指Offer---面试题27:二叉搜索树与双向链表

一.题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val

2017-01-05 14:02:44

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!