摘要:
闲着没事,就来看看源码,看看源码的各种原理,会用只是简单的,知道为什么才是最牛逼的。Handler源码分析那,从使用的步骤来边用边分析:1.创建一个Handler对象:new Handler(getMainLooper(),this); 这是我常用的一个方式,getMainLooper是获取主线程的... 阅读全文
摘要:
TextView都有跑马灯的效果,如果说让你去监听跑马灯效果的执行,我觉得这个需求有点二了,但是也要实现。思路:1.自定义View 继承TextView 这种方法过于麻烦,只是监听一个跑马灯而已。2.自定义SPan。简单好用,扩展TextView的功能。关键代码如下:@Override public void draw(Canvas canvas, CharSequence text, in... 阅读全文
摘要:
很简单的一个效果。我直接上图了。代码就不详细说了,贴出关键代码就行了。 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); canvas.drawCircle(width / 2, height / 2, interRadius, ... 阅读全文
摘要:
Android中的TextView是个显示文字的的UI类,在现实中的需求中,文字有各式各样的样式,TextView本身没有属性去设置实现,我们可以通过Android提供的 SpannableString类封装。Android提供了很多的Span的类去实现样式,这个样式都是继承自CharacterStyle类。 在上一篇博客中详细的介绍的怎么使用各种Span类,这篇博客主要是通... 阅读全文
摘要:
Android中的TextView是个显示文字的的UI类,在现实中的需求中,文字有各式各样的样式,TextView本身没有属性去设置实现,我们可以通过Android提供的 SpannableString类封装。Android提供了很多的Span的类去实现样式,这个样式都是继承自CharacterStyle类。 要想理解Span的具体使用,那肯定得了解SPan类群的构成,... 阅读全文
摘要:
今天是实现了一个小功能的东西。看看效果图:实现方式:1.自定义ScrollView 复写onScrollChange方法,来计算滑动的位置。2.自定义接口,通过接口来在ScrollView中控制,滑动的高度的进度。3.在自定义View中去执行动画。代码实现:1.ScrollView 最主要的代码只有计算滑动位置的代码了,其实也是很简单的,获取子View的个数,每次都去for循环,去计算字V... 阅读全文
摘要:
在所有的移动产品中,微信的界面做的很简洁,简单,我对微信主界面影响最深的就是微信底部导航栏的图标,以及字体颜色的变化,一直都想实现以下,今天有空,就大体的模仿者做了一遍。效果图如下:分析:底部主要分为图标的渐变,字体颜色的渐变。图标的颜色的渐变:主要是通过canvas绘制两个不同的图片,控制其图片的alpha透明度,来达到图标的渐变。字体颜色:字体颜色就很好说了,Animator动画框架应该很熟悉... 阅读全文
摘要:
最近做项目,用到了ProgressBar ,就想到了要使用Android5.0 的效果,就随手实现了一下。效果图:大概的思路:1. 圆圈通过Canvas去绘制2.圆圈的动画通过Animator去控制代码:1.绘制圆的代码是很简单的,@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.dr... 阅读全文
摘要:
下面是内存篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流!1)Memory, GC, and Performance众所周知,与C/C++需要通过手动编码来申请以及释放内存有所不同,Java拥有GC的机制。Android系统里面有一个Generational Heap Memory的 模型,系统会根据内存中不同的内存数据类型分别执行不同的GC操作。例如,最近刚分配的对象会... 阅读全文
摘要:
下面是运算篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流!1)Intro to Compute and Memory ProblemsAndroid中的Java代码会需要经过编译优化再执行的过程。代码的不同写法会影响到Java编译器的优化效率。例如for循环的不同写法就会 对编译器优化这段代码产生不同的效率,当程序中包含大量这种可优化的代码的时候,运算性能就会出现问题。想... 阅读全文