-
Android动画浅析2——属性动画
简介
上篇介绍了View动画。
View动画只能作用于View,而且改变的只是View的绘制效果,View真正的属性并没有改变。
举个例子,如果一个按钮做了平移的动画,虽然其位置改变了,但是这个按钮的点击区域并没有随平移改变,还在原来的位置。
相比之下,属性动画就实现了真正属性的改变,上面例子中的按钮如果使用了属性动画,其平移点击区域也会相应的改变。
属性动画是Android3.0引入的,同View动画一样,可以用xml文件定义。
区别在于,view动画的xml文件放在 /res/anim/ 目录,而属性动画的则放在 /res/animator/ 目录下。
同样,在java代码中引入属性动画的xml文件时,则用 R.animator.xxx,不同于View动画的 R.anim.xxx。
属性动画主要有三个重要的元素:- <animator>,对应的类 ValueAnimator,基本的动画类,处理值动画,通过监听某一值的变化,进行相应的操作
- <objectAnimator>,对应的类 ObjectAnimator,是ValueAnimator的子类,处理对象动画
- <set>,对应的类 AnimatorSet,动画集,可以组合另外两种动画或动画集
-
Android动画浅析1——View动画
动画分类
Android3.0之前提供了两种动画:
- 补间动画 Tween Animation
- 帧动画 Frame Animation
-
Android设计模式浅析——Builder模式
模式简介
《Effective java》一书2.2节介绍了当类的构造器包含多个参数时常用的一种构造器模式——Builder模式。
不直接生成对象,而是利用所有必要的参数调用构造器(或者静态工厂),得到一个builder对象。然后在builder对象上调用类似setter的方法,来设置每个相关的可选参数。最后,客户端调用无参的build方法生成不可变的对象。这个builder是它构建的类的静态成员类。
-
java中的集合浅析3——番外篇
equals()与hashCode()
我们知道,java中所有的类都有一个父类,就是Object类。
Object类中有两个方法:1
2boolean equals(Object obj);
int hashCode();
-
java中的集合浅析2——Hash与HashMap
Hash
Hash(哈希),也称为散列,是一类算法的统称。
Hash函数的主要作用是将数据转换为一个Hash值,方便数据的存储,查询。
因为一般Hash函数的输入是任意长度,而输出是固定长度的,所以,Hash也被认为是一种压缩映射,可以理解为Hash函数将数据压缩成了固定长度的消息摘要。
Hash函数是一种典型以空间换时间的算法,一般用于快速查找和加密算法。
-
java中的集合浅析1——List与Set
-
android编译及优化浅析
-
如何停止一个java线程
日常java编程中,多线程已经司空见惯,各种Thread,Runnable横飞。那应该如何正确的停止一个线程呢?
最原始的Thread类提供了一系列控制线程生命周期的方法——start(),stop(),stop(Throwable),suspend(),destroy()和resume()。
然而,现实是残酷的,现在,除了start()方法,别的都已经处于depreciated状态了!
sun公司的文章Why Are Thread.stop, Thread.suspend,
Thread.resume and Runtime.runFinalizersOnExit Deprecated?进行了一定的解释,当然了,现在destroy()方法也depreciated。
-
Python Property(转)
Python有个非常好的概念叫做属性(property), 它让面向对象编程变得更加简单。
详细说Python的属性之前,我们先看看为什么它是那么重要。
一个简单的例子假设有一天你需要一个类来存储摄氏度. 它还将实现一个方法将摄氏度转换为华氏度。
这样做的方法之一是这样的。1
2
3
4
5
6class Celsius:
def __init__(self, temperature = 0):
self.temperature = temperature
def to_fahrenheit(self):
return (self.temperature * 1.8) + 32
-
Android反编译浅析
写程序永远避不开的一个话题就是破解、反编译,这里,简单介绍一下Android的反编译基础。
apk文件其实是一个压缩包,如果我们将文件的后缀改为zip的话,就可以用压缩工具去对其进行解压。