自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 给任何view添加全屏倾斜水印

如果 要实现如下效果 目前有两种思路: 1.先画出带有水平文字的照片,然后再和原图合成即可 2.旋转画布,然后直接画布写字即可两种方案都差不多,这里讲解的第二种方案。 但是两种方案都存在问题,就是文字需要完全覆盖,那么就需要我们的画布要比图片大,其实只要把画布移动到原图的外切图即可。为了简单分析问题,我们取最长的边,把原图当成正方形,外切正方形的边长即为对角边。如下图 从上图我们可以看出,

2017-10-23 18:10:24 2555

原创 Android拾萃 - RxJava2之变换操作符及其demo

Android拾萃 - RxJava2操作符汇总 Android拾萃 - RxJava2之创建操作符及其demo 一、变换操作符列表 操作符 解析 buffer() 缓存,可以简单的理解为缓存,它定期从Observable收集数据到一个集合,然后把这些数据集合打包发射,而不是一次发射一个 map() 对序列的每一项都应用一个函数来变换Observable发射的数据序列

2017-10-23 03:29:57 530

原创 Android拾萃 - RxJava2之创建操作符及其demo

Android拾萃 - RxJava2操作符汇总 根据下图,再一次回顾一下前面几章的内容,经典的三步法等内容。 Android拾萃 - RxJava操作符和响应类型(二) 的图片。一、创建操作符列表 名称 解析 just() 将一个或多个对象转换成发射这个或这些对象的一个Observable fromArray() 将一个Iterable, 一个Future, 或者一个

2017-10-23 03:29:19 464

原创 Android拾萃 - RxJava2操作符汇总

几种主要的需求: - 直接创建一个Observable(创建操作) - 组合多个Observable(组合操作) - 对Observable发射的数据执行变换操作(变换操作) - 从Observable发射的数据中取特定的值(过滤操作) - 转发Observable的部分值(条件/布尔/过滤操作) - 对Observable发射的数据序列求值(算术/聚合操作)创建操作符

2017-10-23 03:28:40 886

原创 自我的"罪人"

人因为个体力量限制,为提高生存率,在自然选择的作用之下,依靠群居而生存下来.到现代,我们所创造的组织也都是群体结构的合成.其目的都是为了提高效率,为了更好的生存.但是,群体不是个体的简单集合.因此在个体需求和意识会被群体整合.而在高效群体成形过程中,个体既存在着向群体趋近妥协,放弃固有的不合群体规范的东西的倾向,同时又有保持旧有态势和意识、继续发展个体的倾向.虽然高效的群体可以使这两者在尽可能高的层

2017-10-23 03:27:45 490

原创 你的选择错在哪里?

荼蘼,一种蔷薇科的草本植物,春天之后,往往直到盛夏才会开花。因此人们常常认为荼蘼花开是一年花季的终结。开到荼蘼花事了,尘烟过,知多少?人生无常,又有多少事情我们可以提前预料.正如佛说:“一切有为法,尽是因缘合和,缘起时起,缘尽还无,不外如是。”爱到《荼靡》,也意蕴生命中最灿烂、最繁华或最刻骨铭心的爱即将失去。但是一段感情的完结,也意味着下一段新的感情的开始。换句话说,它代表了旧选择的结束以及新选择的

2017-10-23 03:26:48 330

原创 爱源于仰慕,汲于仰慕

仰慕就是在某个方面愿意把对方放到和你平等或者之上的位置,并为她服务,和索求占有是有本质区别的。正确的爱应该以仰慕为基础,以仰慕为营养。很难想象一个能够爱对方的人,却完全找不到对方一点仰慕的地方,这样的你真的还在爱吗?这样却没有离开的你,坚持的又是什么?是走过的岁月?是身边的儿女?是你们之间有了太多的羁绊,就像亲情无法斩断,只能如此的相爱相杀?或许你已经没有了爱,或许只是分开的成本代价太大。没有了仰慕

2017-10-23 03:26:11 1253

原创 嘟嘟投资升级笔记 -- 懂得这几招,投资菜鸟变老鸟

社群的力量真的太大了,一群价值观相近的人,在7年一辈子的一起学习,是多么棒的一件事情!社群也让我认识了很多出色的人,比如我们班的梅王,一个很有个性的投资人,写作者,多面手等等。而这篇文章就是梅王分享的微博,底下是链接。懂得这几招,投资菜鸟变老鸟第一招  马上开始投资,并记录投资日志刻意练习,为什么投,为什么不投,依据是什么。 一个体系,一个习惯的建立,都必须经历过不舒适区,需要不断的刻意练习去培养

2017-10-23 03:25:28 343

原创 如何得到你想要的东西

如何得到你想要的东西如果想要获得某样东西,光想是没有用的,主观意识是不能凭空改变客观现实的,所以你必须要有所行动。而怎么去行动,如何获取,则是我们制定的方法策略。你的策略可以简单粗暴,不管三七二十一,撸起袖子就是干,那么,不送,请不必再继续看下去了。我们也可以考虑周全,来应对各种情境,从而更优的获取到想要的东西。那么,我们具体有哪些策略呢?伯克希尔·哈撒韦来说,它的长期大额投资业绩可能是人类有史以来

2017-10-21 22:14:37 1828

原创 Android拾萃 - 从零打造一个RxJava(搞清楚RxJava代码为什么这么写)

任何框架都是从无到有,都是为了解决问题而产生,那么RxJava是如何产生的呢?RxJava代码的写法,为何如此让人看不懂,回调的参数等等,让小白看了摸不着头脑。接下来的文章,主要是依据NotRxJava懒人专用指南,结合自己的理解,写的一篇更加小白的文章,以帮助我们更好的梳理和理解。Cat 应用程序让我们来创建一个真实世界的例子。我们都知道猫是我们技术发展的引擎,所以就让我们也来创建这么一个用来下载

2017-10-21 22:14:10 669

原创 是谁忽悠了你的智商

我们的社会是由一个个的系统组成的,其中布满了各种节点。 而我们最重要的道德系统,就是其中比较庞大的一个网,但是它本身并不完备,它无法确保所有的节点,都按照统一的机制审核,来确保道德的可信。相反,它还存在很多可以被利用的漏洞,欺骗,犯罪,各种人性的丑恶充斥其中。从古至今,多少学者围绕着道德试图进行求解。时至今日,它依然满是争议。有时候,问题的解决往往不在问题的发生层面。也许简单的系统规则,反而能够确

2017-10-21 22:13:27 316

原创 Android拾萃 - RxJava实战(后台执行耗时操作,实时通知 UI 更新)

开源项目 RxJava-Android-Samples,这里一共介绍了十八种RxJava2的使用场景,这一系列文章主要参考该项目进行。我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据,处理的方法有 HandlerThread、Thread、Service、IntentService、AysncTask、AsyncQueryHandler。对于它们的优异,这里就不展开说了,战友们自行Go

2017-10-21 22:12:50 3393

原创 Android拾萃 - RxJava5种响应类型的区别和背压(三)

Android拾萃 - RxJava最简单的入门(一) Android拾萃 - RxJava操作符列表和响应类型(二)本文首先会给出ReactiveX的核心操作符列表和对应的文档链接,后面会具体的介绍和实践所有的操作符。如果想实现自己的操作符,可以参考:实现自定义操作符 创建操作 用于创建Observable的操作符 Create  — 通过调用观察者的方法从头创建一个Observable

2017-10-21 22:12:13 596

原创 Android拾萃 - RxJava操作符列表和响应类型(二)

经过上一篇文章 Android拾萃 - RxJava最简单的入门(一) 的学习,我们对整个流程有了一定的把握。今天我们就来看看操作符。RxJava中提供了大量不同种类,不同场景的Operators(操作符),RxJava的强大性就来自于它所定义的操作符。 操作符让你可以变换、组合、操纵和处理Observable发射的数据。 Rx的操作符让你可以用声明式的风格组合异步操作序列,它拥有回

2017-10-21 22:11:33 657

原创 化身孤岛的鲸

你是只沉默的鲸,带着大海广阔无边的安静, 巨大如一座孤岛,和着风杂着雨,在咸咸的海水低吟你未入过繁华之境,远离喧嚣的陆地, 穿行万里,只为路过的风景? 日夜春秋,只爱欣赏最辽阔的星?你是只快乐的鲸,伴着浪花的热闹 没有人看得见你的忧伤,因为你的泪水早已溶在海里 你的故事需要听众,你的歌声值得掌声 而你的眼里只有前行,不曾迷茫,如此得坚定历练的旅程没有终点,你走过了多少七年? 不知何时,

2017-10-21 22:10:35 356

原创 Android architecture component架构集成

前言本文档是以demo为例介绍,所以部分内容和解释会在demo里以注释的形式给出。数据库的构建环境配置在app模块的build.gradle添加以下内容: compile 'android.arch.lifecycle:extensions:1.0.0-alpha5' compile 'android.arch.lifecycle:runtime:1.0.0-alpha5' co

2017-10-21 22:09:46 250

原创 Android architecture component架构

简介引言谷歌在今年的I/O大会上发布了新的架构库Android architecture component,为了解决开发者遇到的一些常见问题,推荐遵从以下两个原则构建应用: 1. 关注点分离 尽量避免在Activity或Fragment中编写所有的代码,任何不是处理 UI 或操作系统交互的代码都不应该在这些类中。保持它们尽可能的精简可以避免许多与生命周期有关的问题。 2. model驱动UI

2017-10-21 22:09:14 1201

原创 Jenkins + Gradle + SonarQube 项目持续集成并分析环境搭建

SonarQube简介SonarQube是一个开源的代码质量管理平台,可以通过插件机制集成不同的测试工具、代码分析工具以及继续集成工具。比如pmdcpd、checkstyle、findbugs、jenkins等。具体的代码分析工具介绍,见http://tianya23.blog.51cto.com/1081650/415146. 但是SonarQube并不是简单的将各种质量检测工具的结果直接展示给

2017-10-21 22:08:28 2906

原创 Android拾萃 - RxJava(一)

环境搭建在主项目APP gradle的dependencies {}里添加以下依赖,最新的引用请参考官网RxAndroidcompile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.1.3'趣解rxjavaRxJava也是基于观察者模式来组建自己的程序逻辑的,就是构建被观察者(Observ

2017-09-05 02:54:18 647

原创 Android拾萃- Activity的生命周期和启动模式

一、概述Activity 作为与用户交互的一个窗口,是使用非常频繁的一个基本组件。Android系统是通过Activity栈来管理Activity的,而Activity则是通过哦生命周期来进行自己的创建、活动与销毁等。所以掌握Activity生命周期很有必要。二、金字塔模型   官方的描述很形象,Activity 生命周期的每个阶段就是金字塔上的一阶。   当系统创建新 Activity 实例

2017-09-04 01:02:00 1167

转载 Android拾萃- Android 进程层次

什么是Android进程  在android系统中最重要的进程被称为前台进程,然后依次是任何可见进程、服务进程、后台进程,最后是空进程。接下来我们将进一步展开。   在开始之前我们先要明确一个问题,当我们谈论进程优先级的时候是以 activity、service 这样的组件来说的,但请注意这些优先级是在进程的级别上的,而非组件级别。只要有一个组件是前台进程,就会将整个进程变为前台进程。同时我们要

2017-09-03 17:36:19 418

原创 git对submodule多模块的tag操作(并同步到远程分支)

前言git对多模块的操作需要使用下面的命令git submodule foreach 只需要在后面加上需要进行的操作,就会逐模块执行。比如:git submodule foreach git stash就会遍历所有子模块并把子模块储存起来。打tag因为 git submodule foreach只会对子模块而不会对主仓库操作,所以如果向对所有仓库都打上相同的tag就需要单独对主仓库打tag。git

2017-09-03 17:35:10 4214

原创 Python爬虫入门:Urllib parse库使用详解(二)

获取url参数 urlparse 和 parse_qsfrom urllib import parseurl = 'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'parseResult = parse.urlparse(url)print(parseResult)#获取某个参数

2017-08-09 08:48:47 1083

原创 Http Headers各属性的作用

Request Headers:下图是我访问一个URL:http://www.hzau.edu.cn的一个header,根据具体实例来分析一下各部分的功能及其作用。Accept 作用: 浏览器端可以接受的媒体类型, 例如: Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html 也就是我们常说的html文档,如果服务器无法返回text/htm

2017-08-09 01:37:44 34603

原创 使用adb命令进行无线安装调试apk

首先确保你的手机和电脑在同一个局域网里,然用USB线连接手机和电脑。输入以下命令,ADB服务监听TCP端口,这里我们就选adb connect命令默认连接的5555端口(可以选其他的):adb tcpip 5555接着看看手机的IP地址,一般在WIFI连接那里看高级/详情/更多/配置Wlan之类的位置可找到,我的手机ip是192.168.17.145:adb connet 192.168.1

2017-08-06 12:37:24 4626

原创 优雅的调试手机中的数据库:SQLiteStudio(实时调试)

前言调试Android中的数据库有多种方式,目前比较流行的是:借助电脑端浏览器来调试,可以使用如下两个玩意:StethoAndroid-Debug-Database博主在调试sqlite的时候,发现了个更加简单和强大的工具来调试sqlite数据库。 这个工具叫 SQLiteStudioSQLiteStudio它是个电脑端的软件,一个可视化sqlite的工具,利用SQLiteStudio,我们

2017-08-06 12:21:01 5293 2

原创 Gradle View 的使用,方便查看项目的依赖引用

依赖分析在使用maven时,设置依赖时总也是会有一些冲突的意外。而eclipse 或 myeclipse 对maven的支持中,有个可以分析依赖树的工具,挺好用的。 那么Android studio中有没有能够分析Gradle 依赖树的工具呢? 答案是肯定的,有! 下面就来介绍gradle view这个插件。 安装 gradle view step1 打开设置进入plugins选项卡如果没有安装

2017-08-06 12:19:48 3239 1

原创 编译时间太长?跟我学对症下药!

随着项目的不断迭代,项目越来越大,编译时间也是越来越多,特别是多module的项目更是严重,每次编译项目的时候都是痛苦的等待,那么我们怎么去发现项目里面编译时间花费的地方呢?查看Task编译时间通过命令窗口,输入gradlew build –profile 命令,如图 android studio就会进行编译,经过漫长的等待。并在项目的根目录–build–report底下生成一个文件(4),如图

2017-08-06 12:18:39 4615

原创 Python爬虫入门:Urllib库使用详解(模拟CSDN登录)

urllib是基于http的高层库,它有以下三个主要功能: (1)request处理客户端的请求 (2)response处理服务端的响应 (3)parse会解析url一、爬取网页内容我们知道,网页上呈现的优美页面,本质都是一段段的HTML代码,加上JS 、CSS等,本人也是刚开始学python,这个文章也比较小白,资深老鸟请忽略~~。本文所说的代码都是基于python3的,使用p

2017-08-06 12:13:48 5217 1

原创 拦截tablayout 点击事件,不触发viewpaper滚动 例如登陆检测等场景

场景描述 app架构是底下有四个tab,点击tab切换fragment,但是产品要求,点击tab之前需要检测是否登陆,如果未登录,直接跳转登陆提示,页面不进行切换首先是架构,我们使用TabLayout + Viewpaper + Fragment 来实现,登录提示,只要拿到TabLayout的Tab 监听它的OnClickListener,可是。。。。转折来的太突然。。。public sta

2017-07-02 23:53:39 1092

原创 还在为android图标适配烦恼?字体图标你值得拥有

既然说的是字体图标,那么肯定和android字体有关系。所以,我们先回顾一下基础知识Android 字体设置-Typeface,老司机请略过该部分一、Android 字体设置-Typeface控件的字体设置的两种方式常用的字体类型名称还有:Typeface.DEFAULT //常规字体类型Typeface.DEFAULT_BOLD //黑体字体类型Typeface.MONOSPACE //等宽字体类

2017-06-19 00:36:38 417

原创 史上最巧妙自定义tablayout指示器

国际惯例,无图无真相首先我们先过几个概念,老手这个请自行跳过。 Android的View显示在界面上需要三步:测量,定位和绘制。第一步:测量,View的measure方法这个方法用来测量View显示的宽高值。这个宽高值是基于View**自身宽高,再加上父View的约束**得到的。这个约束使用MeasureSpec类传递。@Override protected void onMe

2017-06-07 07:38:47 7280 1

转载 最全PyCharm 教程

最全PyCharm 教程PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。 工欲善其事,必先利其器!为了学习python语言,我首先下载安装了配置了pyc

2017-05-31 00:13:24 1834

原创 git tag 标签完全用法(如何更好的管理你的分支)

打标签同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做。 本节我们一起来学习如何列出所有可用的标签,如何新建标签,以及各种不同类型标签之间的差别。列显已有的标签列出现有标签的命令非常简单,直接运行 git tag 即可:$ git tagv0.1v1.3显示的标签按字母顺序排列,所以标签的先后并不表示重要程度的

2017-05-30 22:01:41 17903 2

原创 自定义圆环百分占比view (label文字支持自动换行 和设置显示行数)

自定义圆环百分占比view (label文字支持自动换行 和设置显示行数)

2017-05-28 15:34:55 1493

原创 Canvas的drawText绘制文本自动换行(支持设置显示最大行数)

Canvas的drawText绘制文本自动换行(支持设置显示最大行数)使用Canvas的drawText绘制文本是不会自动换行的,即使一个很长很长的字符串,drawText也只显示一行,超出部分被隐藏在屏幕之外。可以逐个计算每个字符的宽度,通过一定的算法将字符串分割成多个部分,然后分别调用drawText一部分一部分的显示, 但是这种显示效率会很低。StaticLayout是android中处理文字

2017-05-24 00:53:01 4850

原创 完全掌握反射的各种用法

完全掌握反射的各种用法什么是反射反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。 Oracle官方对反射的解释是 Reflection enables Java code to discover information about the fields, methods and constructor

2017-05-24 00:08:06 607

原创 android 最全 图片相关知识整理

android 最全 图片相关知识整理图片基础知识梳理 图片基础知识梳理(1) - ImageView 的 ScaleType 属性解析 图片基础知识梳理(2) - Bitmap 占用内存分析 图片基础知识梳理(3) - Bitmap&BitmapFactory 解析图片压缩知识梳理 图片压缩知识梳理(0) - 图片压缩学习计划 图片压缩知识梳理(1) - PNG 原理 图片压缩知识

2017-05-18 01:20:23 560

原创 使用Hexo + Github搭建自己的私人博客

使用Hexo + Github搭建自己的私人博客背景介绍目前有很多博客平台,简书、CSDN等等,但是作为程序猿,就应该装逼搞个自己的私人博客平台,能够自己DIY。网上有很多这种博客,写这篇文章的目的,主要是记录自己创建博客的一个历程,如果你还没有创建过,不妨跟着这篇博客做起来。这篇文章是基于Windows平台的,mac和Linux 的请绕道。准备阶段git环境搭建windows 下安装nodej

2017-05-17 22:38:10 621

原创 马克飞象 Markdown 语法,对应上一篇

这一篇是对应上一篇文章http://blog.csdn.net/philos3/article/details/70478942 的Markdown语法

2017-04-23 00:34:04 7313

空空如也

空空如也

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

TA关注的人

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