自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

走向远方

是男儿总要走向远方,走向远方是为了让生命更辉煌

原创 Androids——日常开发工具和组件集合

Androids Androids是本人根据平时的项目实践经验,为了提高Android开发效率而写的一个工具SDK;里面提供了一些工具类以及自定义View,可在实际项目开发时直接使用。 使用 allprojects { repositories { ... ...

2019-06-19 14:44:41 684 3

原创 瓦片地图加载框架——TiledMapView

有幸参与过一个简易地理信息系统(GIS)的开发,学到了不少地理信息相关的知识,便想要开发一个关于瓦片地图加载的开源库,跟大家一起分享交流。 TiledMapView Android瓦片地图加载,支持多种投影,包括Web墨卡托投影,经纬度直投及自定义投影等;支持定位,添加图层和覆盖物。 用法 G...

2019-04-25 11:30:54 968 1

原创 涂鸦框架的优化——解决绘制时的卡顿问题,纵享丝滑

前言 喜大普奔,涂鸦框架Doodle迎来重大更新! V5.5: 增加优化绘制的选项,可优化绘制速度和性能,纵享丝滑。 真是太不容易了! 其实在很早之前,笔者就已经感受到涂鸦时的卡顿,特别是随着涂鸦越多卡顿越明显,奈何当时心有余而力不足,一直找不到最佳的解决方法。直到最近灵感爆发,终于解决之,纵享丝...

2019-04-11 15:20:47 911 2

原创 OverScroll弹性滚动和惯性滚动效果的实现原理——CoordinatorLayout+Behavior

前面介绍了OverScroll的使用,没看过文章的同学可以先了解下《类似微信首页弹性滚动和惯性滚动效果的实现——OverScroll》 接下来介绍OverScroll的实现原理。 CoordinatorLayout CoordinatorLayout是在Support 包中功能强大的布局容器,它本...

2019-04-02 11:28:30 556 0

原创 类似微信首页弹性滚动和惯性滚动效果的实现——OverScroll

OverScroll 利用CoordinatorLayout+Behavior实现列表弹性滚动和惯性滚动效果(类似微信首页),支持水平和垂直方向的滚动,效果如下: Usage 用法 Gradle allprojects { repositories { ... ...

2019-03-16 17:30:10 354 0

原创 Android文本过长时根据关键字省略内容Ellipsize

有时候我们需要根据关键字截断文本内容,省略多余部分,比如微信搜索聊天记录时会在关键字的前后进行截断. 处理方式和逻辑见如下代码和注释: private static void ellipsizeByKeyword(final TextView textView, String content, ...

2019-03-06 11:09:56 253 0

原创 Android支持多行文本省略Ellipsize

根据关键字省略 有时候我们需要根据关键字省略内容,比如微信搜索聊天记录时会在关键字的前后进行省略. 处理方式和逻辑见如下代码和注释: private static void ellipsizeByKeyword(final TextView textView, String content, S...

2019-02-23 15:12:48 352 0

原创 在规定区域内自动调整文字位置

问题 最近在做一个需求,就是涂鸦时,在绘制的图形旁边通过文字显示相关信息.先给大家看看最终的效果: 一开始的时候被这个问题难倒了,怎么找到合适的位置显示文字信息,让它们既不超出显示范围,又互不重叠? 解决方案 如果考虑不能重叠的问题,就需要在图形四周的位置遍历一遍直到没有跟其他文字重叠,加上绘制...

2019-01-31 20:26:31 431 0

原创 Android涂鸦画板原理详解——从初级到高级(二)

前言 前面写了《Android涂鸦画板原理详解——从初级到高级(一)》,讲了涂鸦原理初级和中级的应用,现在讲解高级应用。如果没有看过前面一篇文章的同学,建议先去看看哈。 准备 高级涂鸦涉及到图片操作,包括对图片进行缩放移动、涂鸦等,这里涉及到矩阵的变换。关于矩阵变换的知识,请查看我的另一篇文...

2018-10-26 19:58:14 2672 3

原创 从显示一张图片开始学习OpenGL ES

前言 网上很多介绍OpenGL ES的文章,但由于OpenGL ES内容太多,所以这些文章难免过于臃肿杂乱,很难抓住重点,对于初学者来说最后还是云里雾里。很多人(包括笔者本人)开始深入了解OpenGL ES是因为其涉及到实时滤镜的应用,通常都会参考开源框架GPUImage的实现。如果没有掌握基本...

2018-09-20 15:51:59 10578 1

原创 Android涂鸦画板原理详解——从初级到高级(一)

准备 前段时间,发布了多功能画板&开源涂鸦框架Doodle,得到了一些小伙伴的关注。但由于框架代码较多,一开始较难理解,有不少人询问了相关的实现细节。我发现不少初学者对基本的涂鸦原理不熟悉,因此我决定写一些简单的例子,用于说明最基本的的涂鸦原理,这也是多功能画板&...

2018-09-14 17:00:25 8264 10

原创 Android涂鸦框架Doodle——仿微信图片编辑(多功能画板)

前言 很久之前做了一个叫Graffiti的涂鸦项目,放在了github上,得到了不少朋友的反馈,也一直有去维护。限制于个人能力水平,一开始并没有过多考虑框架的问题,导致越到后面,代码越臃肿,添加新功能也越复杂,难于拓展。(自己代码,哭着也要写完~~) 在经过了一段时间的历练后,终于意识到了项目...

2018-07-26 11:22:30 5402 13

原创 如何快速阅读并分析Android源码

很多时候为了解决一个问题必须先理解Android系统的运行原理,这时候就得阅读应用层框架的源码。学会阅读系统源码或者他人的代码,这是研发必备的技能之一,只有了解别人写的东西才能在他之上更好的行事,同时也能去学习和借鉴他人优秀的代码思想。 那么,如何阅读并分析Android源码呢? 这里我只讲一...

2018-04-19 19:02:06 3565 3

原创 浅谈矩阵变换——Matrix

矩阵变换在图形学上经常用到。基本的常用矩阵变换操作包括平移、缩放、旋转、斜切。 每种变换都对应一个变换矩阵,通过矩阵乘法,可以把多个变换矩阵相乘得到复合变换矩阵。 矩阵乘法不支持交换律,因此不同的变换顺序得到的变换矩阵也是不相同的。 事实上,图像处理时,矩阵的运算是从右边往左边...

2017-09-05 00:33:14 23801 3

原创 View的绘制流程

View绘制的三大流程主要指:measure(测量)、layout(布局)、draw(绘制)。measure过程中确定View的尺寸(即宽高),layout过程中确定View的位置(即上下左右的位置),draw过程确定View显示的内容。在开发中,通常都是在Activity的onCreate()中...

2017-08-31 16:59:32 1394 0

原创 Android事件分发机制(一)

当手指触摸屏幕后会产生一系列的事件(如点击DOWN、移动MOVE、抬起UP等),事件的信息记录在MotionEvent(手势事件)对象中。这里说的事件分发机制,其实指的是MotionEvent的分发过程。当一个MotionEvent产生了以后,系统需要把这个事件传递给一个具体的View(ViewG...

2017-08-29 15:29:33 446 1

原创 Android消息机制基本原理

先看一段程序,在主线程里面开启了无限循环,处理消息队列里面的消息。public class Test { private static BlockingQueue<Message> messageQueue; // 阻塞队列 public static void main(...

2017-08-27 18:01:04 427 0

原创 Android滚动选择器——水平滚动

前言前面我们讲解了滚动选择器的实现原理,并实现了字符串滚动选择器和图片选择器。没看过的同学建议先去了解一下: 《Android自定义view——滚动选择器》 《android图片滚动选择器的实现》这些滚动选择器的滚动方向都是垂直的。今天我们在此基础上增加可以水平滚动的选择器。效果如下: 实现...

2017-06-13 18:24:03 9196 8

原创 android图片滚动选择器的实现

图片选择器的实现,以及通过选择器实现老虎机效果。 老虎机提供了三种图片绘制模式:填充、居中、指定大小。

2017-04-15 18:02:28 3208 0

原创 android图片涂鸦——旋转与文字功能的实现原理

该项目的代码已经重构,采用了新框架,强烈建议查看《Android全新图片涂鸦框架Doodle——多功能、可自定义、可扩展》 (旧代码暂时不维护了,所以推荐还是使用最新框架吧!也希望大伙支持!!!) 点击移步到最新涂鸦框架&gt;&gt;&gt;Doodle 点击移步到...

2017-03-20 16:49:00 4177 5

原创 android图片涂鸦,具有设置画笔,撤销,缩放移动等功能(二)

该项目的代码已经重构,采用了新框架,强烈建议查看《Android全新图片涂鸦框架Doodle——多功能、可自定义、可扩展》 (旧代码暂时不维护了,所以推荐还是使用最新框架吧!也希望大伙支持!!!) 点击移步到最新涂鸦框架&gt;&gt;&gt;Doodle 点击移步到...

2016-10-14 17:38:36 7848 25

原创 android图片涂鸦,具有设置画笔,撤销,缩放移动等功能(一)

该项目的代码已经重构,采用了新框架,强烈建议查看《Android全新图片涂鸦框架Doodle——多功能、可自定义、可扩展》 (旧代码暂时不维护了,所以推荐还是使用最新框架吧!也希望大伙支持!!!) 点击移步到最新涂鸦框架&gt;&gt;&gt;Doodle 点击移步到...

2016-09-25 15:19:29 10384 38

原创 Android获取输入法高度——输入法与页面布局无缝切换

在QQ或者微信的聊天页面,当输入法和表情栏互相切换时,过度非常自然,而且表情栏高度刚好跟输入法一样。个人感觉这种用户体验特别的好,别看这个细节小,但代码实现处理起来还是有一定难度。今天我就带大家来实现这种效果,下面是效果图: 首先,我们需要知道输入法的高度,使表情栏的高度与之保持...

2016-08-04 20:24:56 11994 3

原创 Android自定义View——可拖拽的ListView

有时时候需要对ListView的Item进行手动拖拽排序,如安桌系统中的对通知栏的开关排序,因此需要自定义一个可拖拽的ListView,效果如下: 使用 gradle: allprojects { repositories { ... mav...

2016-08-03 15:27:59 3807 4

原创 Android资源文件匹配规则及屏幕适配方案

在运行时,Android系统会根据当前的设备设置自动寻找合适的资源。为不同的设备提供不同的资源,主要是利用特殊命名的资源文件夹来实现的。   资源文件命名: Android工程res目录下资源文件的命名格式: 资源名-属性1-属性2-属性3-属性4 资源名的取值有:drawable, va...

2016-04-20 16:19:32 1609 0

原创 Android仿手机QQ空间动态评论,自动定位到输入框

手机QQ空间浏览好友动态时,可以直接对动态评论,点击某条评论,动态列表自动滚动,使输入框刚好在该评论下面,而不会覆盖住评论内容。如下图所示,首先要实现输入框刚好在输入面板上面,且动态列表不会被挤上去。可以使用对话框的形式,这样输入框不会影响原有的布局,弹出的对话框布局如下所示,点击EditText...

2016-04-14 18:32:31 10812 24

原创 解决ViewPager设置切换动画PageTransformer后子页无法触摸的问题

通过ViewPager.setPageTransformer()方法可以设置切换动画,但是如果ViewPager的子页中要处理触摸事件,如浏览图片时对图片放大缩小,ViewPager切换子页后,不能处理触摸事件,似乎子页里面的变的不可点击。尝试了很多中Google上的方法,仍不能解决问题。其实这个...

2016-04-05 15:56:45 2351 5

原创 Android属性动画封装之快速构建动画

Android实现动画效果的方式主要有帧动画、补间动画、属性动画。关于安桌动画的基础知识可以查看这篇文章 Android属性动画完全解析 这里我要讲的是如何快速构建出一个动画效果,如下图: 如果我们用属性动画实现,其中点击男性头像后的动画效果的代码如下: // 男生头像移到上面,水平居中 ...

2016-03-11 15:04:45 1688 0

原创 Android自定义view——滚动选择器

首先介绍android.widget.Scroller类。 Scroller 封装了滚动相关的操作。你可以使用Scroller获取可以产生滚动效果的数据;例如,在响应一个滑动手势时,Scroller会帮你计算 滚动偏移量,你可以根据获取的偏移量来设置你的view的位置,从而实现滚动效果。 主要方法...

2016-03-10 16:40:30 7551 7

原创 Android自定View——可以设置宽高比例的ImageView

如果对android自定义view还不太属性,可以查看我之前写的文章《Android自定义View——基础知识篇》 在App中展示最多的除了文字外,应该就是图片了。为了适配屏幕,有些情况下在布局时图片大小是不固定的,如下图: 中间是三张图片(ImageView),图片左...

2016-01-28 13:43:44 7689 0

原创 Android自定义View——可在背景图和前景图显示遮罩效果的ImageView

设置背景图或前景图的遮罩,而且遮罩范围可以设置为整张图片或非透明部分,另外,还可以设置遮罩的颜色。

2016-01-22 11:05:22 10271 1

原创 Android自定义View——自定义样式

上一节《Android自定义View——可设置形状(圆形、圆角矩形)的ImageView,抗锯齿》讲解了第一个自定义View,现在以上一节的例子讲解自定义样式的使用,方便在xml布局文件中直接设置自定义View的属性。 首先在res/values/目录下创建attrs.xml(文件名可自...

2016-01-21 10:56:29 798 0

原创 Android自定义View——可设置形状(圆形、圆角矩形、椭圆)的ImageView,抗锯齿

(如果对自定义View不太熟悉,可以查看上篇文章《Android自定义View——基础知识篇》) 有时显示的图片(如用户头像)是圆形或者圆角矩形的,如果我们把每一种形状的图片都裁剪成一个图片文件,这样既麻烦也浪费空间,所以最好的办法是通过代码来设置图片的显示形状。 显示图片用到的是Image...

2016-01-20 15:22:26 9106 0

原创 Android自定义View——基础知识篇

自定义View的实现方式大概可以分为三种,自绘控件、组合控件、以及继承控件。 每一个view的绘制过程都经历三个主要的阶段,测量(measure)、布局(layout)及绘制(draw),在自定义view时,我们主要关注这三个阶段分别对应的onMeasure()、onLayout()及onDr...

2016-01-19 22:43:50 1153 1

原创 形象讲解Android中dpi,dp和px之间的关系(设计师如何与程序员沟通)

屏幕尺寸指屏幕(显示屏)对角线的长度,单位为英寸。 dpi(dots per inch 像素密度)指每英寸中的像素数. (1)在android中,160dpi设备下,1px = 1dp,160dpi表示一英寸中包含160个像素点(px),即把一英寸平均分成160个单元格,每个单元格就有一个...

2016-01-13 23:21:16 571 0

原创 Android库工程及代码混淆(project.properties、proguard-project.txt)

在Android开发中,许多项目是作为库(library)工程被其他项目引用。 在eclipse中,右键项目名称点击进入“属性(properties)”,点击“Android”,在设置面板上勾选“is library“,可以项目设置为库工程。同时在相同设置面板上可以引入其他工程。 设置成功后,...

2016-01-06 10:18:22 1389 0

原创 Ubuntu下录制屏幕并转换成gif

1)打开Ubuntu软件中心,分别安装RecordMyDesktop,GNOME MPlayer和ImageMagick。 2)安装之后,打开RecordMyDesktop,点击选择窗口,也可以在任务栏上右键该应用的图标(红点),点击“选择区域”,更加精确地选择录制区域(必须回到桌面才能选择)。选...

2016-01-05 17:56:25 2925 0

原创 android YUV转RGB

在百度找到了YUV转RGB的方法,但fax

2014-09-14 01:09:05 1229 0

原创 android隐藏标题栏,解决应用启动闪过标题的问题

首先android系统y 方法一: this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, Wi...

2014-09-14 00:46:28 590 1

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