1. 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,动画集,可以组合另外两种动画或动画集

  2. Android动画浅析1——View动画

    动画分类

    Android3.0之前提供了两种动画:

    • 补间动画 Tween Animation
    • 帧动画 Frame Animation

  3. Android设计模式浅析——Builder模式

    模式简介

    《Effective java》一书2.2节介绍了当类的构造器包含多个参数时常用的一种构造器模式——Builder模式。
    不直接生成对象,而是利用所有必要的参数调用构造器(或者静态工厂),得到一个builder对象。然后在builder对象上调用类似setter的方法,来设置每个相关的可选参数。最后,客户端调用无参的build方法生成不可变的对象。这个builder是它构建的类的静态成员类。


  4. java中的集合浅析3——番外篇

    equals()与hashCode()

    我们知道,java中所有的类都有一个父类,就是Object类。
    Object类中有两个方法:

    1
    2
    boolean equals(Object obj);
    int hashCode();


  5. java中的集合浅析2——Hash与HashMap

    Hash

    Hash(哈希),也称为散列,是一类算法的统称。
    Hash函数的主要作用是将数据转换为一个Hash值,方便数据的存储,查询。
    因为一般Hash函数的输入是任意长度,而输出是固定长度的,所以,Hash也被认为是一种压缩映射,可以理解为Hash函数将数据压缩成了固定长度的消息摘要。
    Hash函数是一种典型以空间换时间的算法,一般用于快速查找和加密算法。


  6. java中的集合浅析1——List与Set

    collection_hierarchy


  7. android编译及优化浅析

    CompileFlow


  8. 如何停止一个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。


  9. Python Property(转)

    原文:Python Property

    Python有个非常好的概念叫做属性(property), 它让面向对象编程变得更加简单。
    详细说Python的属性之前,我们先看看为什么它是那么重要。
    一个简单的例子假设有一天你需要一个类来存储摄氏度. 它还将实现一个方法将摄氏度转换为华氏度。
    这样做的方法之一是这样的。

    1
    2
    3
    4
    5
    6
    class Celsius:
    def __init__(self, temperature = 0):
    self.temperature = temperature

    def to_fahrenheit(self):
    return (self.temperature * 1.8) + 32


  10. Android反编译浅析

    写程序永远避不开的一个话题就是破解、反编译,这里,简单介绍一下Android的反编译基础。
    apk文件其实是一个压缩包,如果我们将文件的后缀改为zip的话,就可以用压缩工具去对其进行解压。