• animator 存放property animations文件
  • anim 存放帧动画、属性动画xml文件,property animations可以存放在anim里,但是animator的目录下的xml较高的优先级
  • color 颜色xml
  • drawable 图片,格式包括Bitmap files(.png,9.png,.jpg,.gif)或者XML(State lists)状态列表的XML
    • Bitmap files .png格式
    • Nine-Patches(re-sizable bitmaps).9.png格式图片
    • State lists状态列表的XML
    • Shapes shape的XML
    • Animation drawables动画XML
    • Other drawables其他图片
  • layout 布局文件
  • menu 菜单
  • raw 资源
  • values
    • arrays.xml 数组资源
    • colors.xml 颜色
    • dimens.xml 尺寸文件
    • string.xml 字符串
    • style.xml 风格文件
  • xml xml文件

    命名规则

  • MCC and MNC 通信方式
  • Language and region(地区和语言)
    • en
    • fr
    • en-rUS
    • fr-rFR
    • fr-rCA
  • res/
    • layout/
    • layout-ar/ (阿拉伯方式,从右到左)
    • layout-ldrtl (从右到左,但根据语言限定有更高的优先级)
    • sw(smallest width,最小宽度)
      • sw320dp
      • sw600dp
      • sw720dp
    • Available Width(可用宽度,这里会根据屏幕的选择而改变)
      • w720dp
      • w1024dp
    • Available Height(可用高度)
      • h720dp
      • h1024dp
    • Screen Size
      • small
      • normal
      • large
      • xlarge
    • Screen Aspect
      • WQVGA,WVGA,FWVGA
      • QVGA,HVGA,VGA
    • UI mode(根据系统区分,汽车或者可穿戴设备)
      • car
      • desk
      • television
      • appliance
      • watch
    • Night Mode(夜晚模式)
      • night
      • notnight
    • Screen pixel density(dpi屏幕密度)
      • ldpi 120dpi
      • mdpi 160dpi
      • hdpi 240dpi
      • xhdpi 320dpi
      • xxhdpi 480dpi
      • xxxhdpi 640dpi
      • nodpi 不放大
      • tvdpi 介于mdpi和hdpi之间
    • TouchScreen Type
      • notouch 没有触摸屏
      • finger 有触摸屏
    • Keyboard availability 键盘可用性
      • keysexposed 有键盘
      • keyshidden 有可隐藏的硬件键盘
      • keyssoft 没有键盘
    • Primary text input method 主要的输入方式
      • nokeys 没有物理键盘
      • qwerty 有一个物理键盘,无论用户是否可见
      • 12key 有一个12个键的键盘,无论用户是否可见
    • Navigation key availability 系统导航栏是否可用
      • navexposed 用户可以使用系统导航栏
      • navhidden 不可以使用
    • Platform Version (API level) 平台版本,不能的API版本使用不同的布局.例如5.0以上的系统可以使用卡片等主题.
      • v3
      • v4
      • v7

Context可能是Android中最常用的元素之一,但也是最容易用错的。
Context对象常见的功能,有传递引用、加载资源、启动Activity、获取系统服务、获取内部文件路径以及创建View,但是Context的功能远不止这些。

Read More

方法一

打开这个网站http://www.androiddevtools.cn/,网站上基本上有你需要的SDK或者其他全部工具(如果没有请fork一下吧,把你知道添加进去!),具体安装下载请仔细阅读相关说明,正确配置即可。由于资源基本上都在百度云盘,下载速度必然刚刚的。

方法二

在Android Studio中打开SDK Manager如下:

在mac上可以直接使用快捷键cmd + ,来打开SDK Manager Setting,Windows下可以在SDK Manager中在菜单栏找到Tools -> Options也能找到下面这个设置界面

设置HTTP Proxy Server: <mirrors.neusoft.edu.cn>
设置HTTP Proxy Port: 80
并且可以强制使用http代替https

方法三

VPN,花钱买自由!

POP动画极为流畅,秘密就在于POP通过CADisplayLink高达60FPS的特性,打造了一个游戏级的动画引擎。
CADisplayLink是一个类似NSTimer的定时器,不同之处在于,NSTimer用于定义任务的执行周期,它的执行收到了CPU阻塞影响,而CADisplayLink则用于定义画面的重绘,动画的演变,基于帧(frames)的间隔。通过CADisplayLink程序的重绘速度设定到和屏幕刷新频率一致,因此可以得到流畅的交互动画。

基本类型

Spring Animation

Spring Animation提供了一个弹簧效果的动画,通过一系列参数的设置,完成风骚的动画

  • Bounciness 反弹,影响动画作用的参数的变化幅度
  • Speed 速度
  • Tension 拉力,影响回弹力度以及速度
  • Friction 摩擦力,如果开启,动画会不断重复,幅度逐渐削弱,知道停止
  • Mass 质量,细微的影响动画的回弹力度以及速度
1
2
3
4
5
6
7
8
9
10
// 创建一个二维平面沿X轴和Y轴进行缩放的动画
POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
// 指定缩放倍数,不指定fromValue,POP会默认使用当前大小
anim.toValue = [NSValue valueWithCGPoint:CGPointMake(2.0,2.0)];
anim.springBounciness = 4.0;
anim.springSpeed = 12.0;
// 指定Callback,在动画执行的过程中,会不断调用该block
anim.completionBlock = ^(POPAnimation *anim,BOOL finished){
if(finished) {NSLog(@"animation finished!");}
};

Decay Animation

Decay Animation变现为一个衰减效果的动画,设置一个参数velocity(速率)

1
2
3
4
5
6
POPDecayAnimation *anim = [POPDecayAnimation animWithPropertyNamed:kPOPLayerPositionX];
anim.velocity = @(100.0);
anim.fromValue = @(25.0);
anim.completionBlock = ^(POPAnimation *anim,BOOL finished){
if(finished){NSLog(@"Stop");}
};

设置deceleration(负向速度)可以设置一个加速度量

Property Animation & Basic Animation

Property Animation为属性动画,是Spring Animation和Decay Animation的父类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
POPBasicAnimation *anim = [POPBasicAnimation animation];
anim.duration = 10.0;
// 一个慢开慢停的动画
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
// 定义属性
POPAnimatableProperty * prop = [POPAnimatableProperty
propertyWithName:@"count"
initializer:^(POPMutableAnimatableProperty *prop)
{ prop.readBlock = ^{id obj,CFFloat values[])
// 告诉POP如何获取值
{ value[0] = [[obj description] floatValue];};
prop.writeBlock = ^(id obj,const CFFloat values[])
// 如何改变值
{ [obj setText:[NSString stringWithFormat:@"%.2f",values[0]]];};
// 设置动画变化阀值
prop.threshold = 0.01;}];
anim.property = prop;
anim.fromValue = @(0.0);
anim.toValue = @(100.0);