自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 从invalidate分析view绘制流程

1.前言 关于view的绘制流程,现在网上一查,就会直接告诉你,view的绘制流程是先onMeasure,然后onLayout,在最后onDraw,没错,绘制流程确实也是这样。所以我们今天要讨论的话题除了那三大方法内部到底做了什么,还要知道这个流程是怎么来的。这样大家就会对view的绘制过程有一个...

2019-01-07 15:58:26 1690 0

原创 JVM内存区域

简单概述JVM有哪些内存区域,以及他们的功能 主要是七个区域: 程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区 运行时常量池 直接内存 1.程序计数器 程序计数器是一块较小的内存区域,我们可以将它看作是一个记录当前代码运行到什么位置的行号指示器。 但是这个指示器并不是直接指定某行...

2018-11-27 15:02:05 408 0

原创 战略性了解WindowManager

什么是战略性了解:知其然,无需知其所以然,也就是知道整体结构框架即可,不追根内部具体实现。

2018-11-19 11:53:53 308 0

原创 Android Studio上的代码折叠

折叠格式: // region [描述] // // endregion 如图: IDEA系列的软件估计都有这个功能

2018-11-14 11:10:55 855 0

原创 setContentView的时候,到底发生了什么

关于setContentView方法,想必大家对这个方法既熟悉又陌生,熟悉的原因是因为基本上我们每创建一个activity,都会调用这个方法,比如: ``` @Override protected void onCreate(Bundle savedInstanceState) { su...

2018-11-12 18:10:23 4369 1

原创 从源码角度深入探寻Scroller的奥秘

前言 给未使用过scroller的人说的话: Scroller是一个跟滑动有关的类(大家都这么说(大家:我不承认!

2018-10-25 19:39:07 1197 5

原创 从小白角度探索Android事件分发机制

概念 所以我们要开始讲解事件分发机制了,说到事件分发机制,这个知识点主要是在自定义view的时候用到,那么什么是事件分发机制呢。 这里我用大白话概述一下:当我们在自定义view的时候,或者在使用某个控件的时候,在给这个view或者控件设置事件的时候,比如有setOnTouchListener、...

2018-10-17 17:18:57 661 4

原创 Android绘制波浪线 进阶

前言 在我的上一篇博客中,我讲解了如何绘制一条波浪线,今天我们的目的是,绘制一条随心所欲的波浪线,什么叫随心所欲的波浪线呢,由于上篇主要讲解的是绘制波浪线的原理,不过就有人提问了,万一我想要的波浪线长度小于屏幕长度怎么办,那么今天我们就来讲解下,怎么绘制一条长度可以自己把控的波浪线,先来效果图吧...

2018-09-21 14:53:30 1608 2

原创 Android之Shader完全理解指南

Shader,中文翻译着色器,老是说,我的专业不是图像处理之类的,所以我也不清楚着色器到底是干嘛的,如果非要我在字面上加以理解,通俗就是给某个机器拿着一直画笔在白纸上画东西,而这个机器就叫着色器,我也不知道这样理解对不对,但是这些概念和东西,都不会影响今天我们要学习的内容,着色器Shader。 ...

2018-09-21 10:18:44 2645 5

原创 EasySQL 轻松上手的数据库框架

EasySQL是由我独立开发的一款操作数据库的框架,特点是上手容易,使用简单。 目前版本是 v0.1.3 那么我就开始了,这款框架目前已有的功能如下: 创建数据库 删除数据库 创建表 增删改查 数据库自动升级 平时不怎么鼓捣数据库的,用数据库的时候,...

2018-09-17 17:49:00 915 1

原创 Android数据库使用指南(下)

上一节中,我们将到了怎么创建一个数据库,以及对数据库中对表中的数据,进行增删改查,主要操作的对象是表中的数据,这一章,我们将会讲解怎么对数据库中对表进行操作。 那么表可以做那些操作呢,比如删除表啊,修改表中的某个字段啊,新增表中的字段啊,总之就是数据库中的表,发生变化,除了刚刚说的那些变化,新增...

2018-09-14 10:57:07 596 1

原创 Android数据库使用指南(上)

无论如何,我决定写一篇跟数据库有关的博客,虽然早就想写了,但是还是推到了现在。 前言 Android上的数据库是sqlite,虽然这个数据库是轻量级的,但是储存的东西可不少,sqlite官方表示理论存储容量为140TB,目前应该没有那么大容量的手机,存储能力太强了。 关于如何使用SQ...

2018-09-12 16:34:45 4993 0

原创 Python爬取网页数据

都说python爬网页数据方便,我们今天就来试试,python爬取数据到底有多方便 简介 爬取数据,基本都是通过网页的URL得到这个网页的源代码,根据源代码筛选出需要的信息 准备 IDE:pyCharm 库:requests、lxml 大概介绍一下,这俩库主要为我们做什么服务的...

2018-08-29 17:20:35 59649 22

原创 如何撸一个ArrayList

起因 前段时间在看一本书码农翻身。这本书很不错,推荐阅读!(真不是打广告,好书要分享)。老实说,在此之前,这是一个公众号(好吧,现在也是),里面写了很多通俗易懂的文章,没想到最近居然出书了,赶快买了一本,一通畅读之后,在书中其中一章看到了一些有意思的事情。 大意就是,他写了一个List的接口,...

2018-08-10 17:42:58 437 2

原创 Android相机屏幕适配

前言 本文默认你已经会的Android相机开发,但是苦恼于相机屏幕适配 如果不会相机开发,可以参考以下作者的文章: Tong ZHAN Android相机开发(一):最简单的相机 Android相机开发(二): 给相机加上偏好设置 Android相机开发(三): 实现拍照录像和查看 ...

2018-07-11 14:17:56 1686 0

原创 Tinker关于clean后准基包消失的解决方案

如果你还不会使用Tinker,可以参考这篇文章 在使用Tinker的时候,当我们使用assembleRelease或者assembleDebug对项目进行编译对时候,会在/app/build/bakApk下生成编译好的文件,我们制作补丁也是基于这些文件,但是由于是在build目录下,所以当我...

2018-07-10 09:51:53 429 0

原创 Tinker使用指南

随着技术的发展,我们来到了热修复时代,网上一大堆关于热修复的文章和框架,相信能来到这里,你也知道什么叫热修复吧,让我用通俗的语言给大家定义一个概念: 热修复就是在无需重新安装应用的情况下,修改目前存在的bug,或者新增功能 这样讲是不是蛮好理解的。 然后我们再众多热修复框架中,选择Tinke...

2018-07-04 17:25:56 2023 0

原创 git分支的使用

今天我们来说说git分支有关的知识 前言 我们使用git作为我们的代码版本控制,如果一直一个人开发,可能会一直一条线式的形成一个线性提交,比如这样: 但其实一个项目一般提交的状况都很忐忑,可能长这样 还有更复杂的: 相信看到这里到你,早已眼花缭乱,分到清楚吗,这么复杂。一...

2018-07-02 17:09:23 5117 0

原创 如何将Android studio中的项目导入到第三方的git托管库中

准备工具 git 我们需要在git官网下载最新的git工具,并且将其配置到环境变量中 第三方代码托管的网站 如GitHub,coding,码云等 本篇文章我将以coding作为例子 新建项目 假设此时你已经下载并安装好了git,也在coding上注册了账号。 那我们点击c...

2018-05-24 11:32:48 991 0

原创 遍历矩阵

记录一个小算法,打印矩阵 假设我们有一个矩阵 int [] arr = { 1,2, 3,4, 5,6 } 如果我们要一排一排的打印: 则: for (int i = 0; i < 3; i++) { for (int j = 0...

2018-04-24 14:23:56 1744 0

原创 从矩阵中取出子矩阵

探索一个简单的算法,从矩阵中取出一个小矩阵应该怎样实现。 具体什么意思呢,比方说我们现在有一个int型的数组,将其用矩阵的形式写出来就会长这个样子: int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,...

2018-04-17 12:00:14 3725 0

原创 Android Studio配置OpenCV

最近项目中需要用到opencv,于是就研究了一下怎么在Android studio中配置opencv,记录下来,免得以后忘记了。 材料篇 准备用品: Android Studio (我使用的是3.0.1) OpenCV(我当前使用的是3.3.0) 相信大家都有android s...

2018-01-31 16:02:32 329 0

原创 一步一步了解handler机制

说起handler,相信大家一定都不陌生,因为太常用了,而关于handler的机制,现在网上也是一大堆,但是我还是要在这里讲一遍,毕竟知识这个东西是要自己讲出来才能表示自己已经理解了嘛!概念handler在我的理解中,就是处理自己发送的消息,跟个接口回调似的,这里一调用接口方法,那里的接口实现就有...

2017-11-07 17:16:18 715 2

原创 Android常用框架

为了记录平时常用的框架,随时更新网络: retrofit:网络框架 converter-gson:和retrofit结合使用的好东西,直接转化为实体 gson:依赖大概长这种样子compile 'com.google.code.gson:gson:2.8.1',主要看版...

2017-08-24 12:23:14 370 0

原创 Android绘制波浪线

今天让我们来绘制一条波浪线,并且提供了控制波浪大小和波浪速度的方法,首先我们来看看完成的效果: 效果是不是还不错,接下来我们就来看看具体怎么实现的吧!实现思路波浪线的绘制 波浪线是怎么实现的呢,其实这用到的内塞尔曲线。 大家可以在这里看看贝塞尔曲线的使用方式。——贝塞尔曲线开发的...

2017-07-12 18:09:17 6928 3

原创 RxJava系列教程之线程篇(五)

序言本章我们将讲解rxjava的线程调度相关的东西,为什么会引入线程这个东西呢,必须的啊,总不能把所有操作都放在主线程吧,再说,Google那边的人也不干啊,像什么耗时操作,还是丢在子线程好,像什么计算之类的操作,就丢在专门计算的线程中,这样既减少了错误,有提高了效率,多好啊,那么就让我们来看看r...

2017-07-11 17:59:22 429 0

原创 RxJava系列教程之过滤篇(四)

序言 上章我们讲到了rxjava最神奇的变换,本章我们开始讲rxjava中的和过滤有关的操作符,因为过滤操作符比较简单,那我就教科书式的介绍了。 过滤 1.

2017-07-05 14:45:35 424 0

原创 RxJava系列教程之变换篇(三)

序言上次我们介绍了RxJava的各种创建方式,但是那根本不能让我们体会到RxJava的强大之处,所以这节,我们要讲的是RxJava最厉害的地方,变换。 变换要怎样来理解,那就是,假设observable发送的数据是String类型的,一个变换的操作符,就可以变成其他类型,比如Integer类型,...

2017-07-04 16:33:01 436 0

原创 RxJava系列教程之创建篇(二)

序言上篇我们介绍了rxjava的意义,和最基本的用法,好吧,其实那根本不算用法,而且写法很复杂,接下来我们来介绍下rxjava的简单创建方式。被观察者篇我们先来回顾下上期我们是怎么创建一个被观察者的:// 被观察者 Observable<String> observable = Obs...

2017-06-19 17:27:34 435 0

原创 RxJava系列教程之介绍篇(一)

序言RxJava是目前很火的开源框架之一,主要能够让你的代码逻辑变的很清晰,而且使用起来很方便,现在我们就来开始学习这个框架究竟牛逼在什么地方。介绍之外貌协会rxjava通过链式操作给人使用

2017-06-12 15:25:46 521 0

原创 N个例子让你彻底理解java接口回调

说到接口回调,对于初学者来说,理解是真的难啊,不过没有关系,看完本篇文章,你马上就能理解接口回调啦!概念什么是接口回调?用我的理解,就是:A让B去做一件耗时的操作,而且并不知道要花费多少时间,B做完了后,告诉A事情做完了,并且把结果给A。当然,B在做这件事的时候,A还可以做其他事情用途假设有一件耗...

2017-03-23 00:17:20 3484 12

原创 SharedPreferences的用法及指南

一句话概括SharedPreferences在android中主要以xml文件的方式保存较小的键值对。1.SharedPreferences介绍在android中,保存较小的android键值对,主要可以保存的数据类型有: - String - Float - Boolean - Int ...

2017-01-12 00:12:16 11428 1

原创 异步加载网络图片带进度

今天要做的一个效果是,异步加载网络图片,带加载进度,先来看看效果图 大体效果就是这样,加载网络图片,并且带有一个加载进度,这个加载进度想怎么用的行,用processbar也行。那好, 我们先来看看具体的实现方式。加载图片首先需要知道怎么获取图片,首先获取图片是个网络操作,当然要放到异步线程里面,...

2016-12-04 21:37:08 629 0

原创 VideoView加载闪黑屏

最近在开发中遇到了一个问题:从A页面跳到B页面,B页面包含VideoView,然后屏幕会快速的闪过一个黑屏,很影响用户体验度。情境: 新人Android开发者小明正在开发公司的项目,项目里面包含的有视频播放,但是遇到一个问题,每次进入视频播放界面的时候,都会闪下黑屏,以前他完全没有注意这...

2016-10-25 09:46:46 4267 9

原创 android视频播放 vitamio的简单运用

今天主要是讲如何简单的播放视频,我们要用到的一个框架——vitamio,这个框架及其强大,播放视频,直播神马都可以。话不多说,我们来看看今天的任务,今天要教大家的是,vitamio的基础用法。先上效果图: 效果解析 1. 播放视频 2. 点击视频视图,下面出现系统自带的进度条 3. 视频...

2016-10-17 00:47:43 1096 0

原创 仿网易新闻分类刷新

最近做自己的一些小东西的时候,需要用到类似网易新闻的那种分类界面,就是上面一个tab选项卡,下面一个viewpager,可以滑动的,而且无论是滑动到哪一页,都可以下拉刷新当前页面。想了半天后,总算是实现了,以下是效果图。效果图效果很简单,就是一个可滑动的分类,并且每页都可以下拉刷新,并获取到对应的...

2016-08-04 19:36:00 742 2

原创 ListView加CheckBox简单实现批量删除

前段时间要做一个批量删除的功能,身为初学者的我,开始尝试做这个功能,但是出现了以下3个情况: checkbox被勾选上后,listview滑走再滑回来,本来应该被选中的checkbox成了未选中状态 连续勾选后,删除的不完整,比如我同时勾上了第3、4、5个item,点击删除后第3、4个倒是被删除了...

2016-07-07 02:06:32 702 0

原创 Android如何高效加载大图

今天的学习目标是如何高效的加载大图 众所周知,android 在加载数量很多的大图的时候,容易引起OOM异常(内存溢出),这是为什么呢?是因为现在的手机图片的分辨率越来越高,图片越来越多,而系统给单个应用施加了内存限制,比如16MB,这就导致加载bitmap的时候,很容易就内存溢出了。bitma...

2016-06-23 01:22:38 648 0

原创 Android聊天界面实现方式

最近心血来潮,打算实现一个很久之前就想实现的一个界面,就是聊天界面,当时觉得好高大上啊,完全不会啊,不过最近不小心找到了方法。效果图 本来是想上传一张动态图的,但是不知道怎么回事,半天传不上去,只好上传一张静态图了。效果解析:在底部输入框里面输入文字信息,点击左边的按钮,就会是左边的消息发布,点...

2016-05-19 23:49:58 13990 22

原创 抽屉侧滑菜单Drawerlayout-基本使用方法

前几天一直想做一个侧滑菜单的效果,在网上查了一些资料后,决定用drawerlayout来实现这个功能,不说废话,先上图: 效果图: 这其实是一个很简单的效果,主页一个按钮,点击后菜单会从左侧划过来,当然,用手指从左侧边缘划过,也能把菜单滑出来。实现方式:实现方式其实非常简单,首先,布局文件...

2016-05-15 22:36:10 937 0

提示
确定要删除当前文章?
取消 删除