自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (9)
  • 收藏
  • 关注

原创 从invalidate分析view绘制流程

1.前言关于view的绘制流程,现在网上一查,就会直接告诉你,view的绘制流程是先onMeasure,然后onLayout,在最后onDraw,没错,绘制流程确实也是这样。所以我们今天要讨论的话题除了那三大方法内部到底做了什么,还要知道这个流程是怎么来的。这样大家就会对view的绘制过程有一个比较清晰的认识。这里我想从view的一些常用方法来进行研究,就从invalidate这个方法开始吧。...

2019-01-07 15:58:26 3810

原创 JVM内存区域

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

2018-11-27 15:02:05 1094

原创 战略性了解WindowManager

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

2018-11-19 11:53:53 763

原创 Android Studio上的代码折叠

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

2018-11-14 11:10:55 1499

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

关于setContentView方法,想必大家对这个方法既熟悉又陌生,熟悉的原因是因为基本上我们每创建一个activity,都会调用这个方法,比如:```@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);}```而且这种写法已经是创建activity的模版了

2018-11-12 18:10:23 6841 3

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

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

2018-10-25 19:39:07 1733 7

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

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

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

原创 Android绘制波浪线 进阶

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

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

原创 Android之Shader完全理解指南

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

2018-09-21 10:18:44 5121 8

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

EasySQL是由我独立开发的一款操作数据库的框架,特点是上手容易,使用简单。目前版本是 v0.1.3那么我就开始了,这款框架目前已有的功能如下:创建数据库删除数据库创建表增删改查数据库自动升级平时不怎么鼓捣数据库的,用数据库的时候,感觉也就这几个功能哈!那么我也不按照顺序来介绍这些功能应该怎么实现,我从开发的角度来接受如何使用这个框架吧!使用第一步:将...

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

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

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

2018-09-14 10:57:07 1393 3

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

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

2018-09-12 16:34:45 11770 1

原创 Python爬取网页数据

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

2018-08-29 17:20:35 166813 61

原创 如何撸一个ArrayList

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

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

原创 Android相机屏幕适配

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

2018-07-11 14:17:56 2490 3

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

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

2018-07-10 09:51:53 688

原创 Tinker使用指南

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

2018-07-04 17:25:56 4440

原创 git分支的使用

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

2018-07-02 17:09:23 6696

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

准备工具git 我们需要在git官网下载最新的git工具,并且将其配置到环境变量中第三方代码托管的网站 如GitHub,coding,码云等 本篇文章我将以coding作为例子新建项目假设此时你已经下载并安装好了git,也在coding上注册了账号。那我们点击coding上的创建项目 输入好项目名称,然后添加项目描述,在选择私有项目和公开项目的时候注意下,...

2018-05-24 11:32:48 3718

原创 遍历矩阵

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

2018-04-24 14:23:56 2972

原创 从矩阵中取出子矩阵

探索一个简单的算法,从矩阵中取出一个小矩阵应该怎样实现。具体什么意思呢,比方说我们现在有一个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,23,24,25};用类似矩阵的形状写出来如下:int[] arr = { 1, 2, ...

2018-04-17 12:00:14 10337 1

原创 Android Studio配置OpenCV

最近项目中需要用到opencv,于是就研究了一下怎么在Android studio中配置opencv,记录下来,免得以后忘记了。材料篇准备用品:Android Studio (我使用的是3.0.1)OpenCV(我当前使用的是3.3.0)相信大家都有android studio,所以我们需要去官网下载好opencv。 下载然后解压完毕后应该会是这样一个目录:

2018-01-31 16:02:32 606

原创 一步一步了解handler机制

说起handler,相信大家一定都不陌生,因为太常用了,而关于handler的机制,现在网上也是一大堆,但是我还是要在这里讲一遍,毕竟知识这个东西是要自己讲出来才能表示自己已经理解了嘛!概念handler在我的理解中,就是处理自己发送的消息,跟个接口回调似的,这里一调用接口方法,那里的接口实现就有动静了,然后处理消息。 大白话就是:从前有个记忆里超级差的人,他叫小明,因为他记忆力很差,经常忘记要做

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

原创 Android常用框架

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

2017-08-24 12:23:14 484

原创 Android绘制波浪线

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

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

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

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

2017-07-11 17:59:22 653

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

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

2017-07-05 14:45:35 623

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

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

2017-07-04 16:33:01 589

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

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

2017-06-19 17:27:34 605

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

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

2017-06-12 15:25:46 742

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

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

2017-03-23 00:17:20 5602 10

原创 SharedPreferences的用法及指南

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

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

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

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

2016-12-04 21:37:08 790

原创 VideoView加载闪黑屏

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

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

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

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

2016-10-17 00:47:43 1346

原创 仿网易新闻分类刷新

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

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

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

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

2016-07-07 02:06:32 934

原创 Android如何高效加载大图

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

2016-06-23 01:22:38 999

原创 Android聊天界面实现方式

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

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

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

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

2016-05-15 22:36:10 1190

android自定义veiw——波浪线

详情:http://blog.csdn.net/it_xf/article/details/75014160

2017-07-12

java接口回调

http://blog.csdn.net/IT_XF/article/details/65058367

2017-03-23

SharedPreferences工具类

详情:http://blog.csdn.net/IT_XF/article/details/54356993

2017-01-12

异步加载图片带进度

博客地址:http://blog.csdn.net/IT_XF/article/details/53456741

2016-12-04

vitamio的简单使用

博客地址:http://blog.csdn.net/IT_XF/article/details/52834575

2016-10-17

仿网易新闻分类刷新

详情请看:http://blog.csdn.net/IT_XF/article/details/52122215

2016-08-05

listview+checkbox实现简单批量删除

http://blog.csdn.net/IT_XF/article/details/51847835

2016-07-07

仿聊天界面

详情:http://blog.csdn.net/IT_XF/article/details/51458441

2016-05-20

引导页实现

详细详细:http://blog.csdn.net/IT_XF/article/details/51194555

2016-05-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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