AnroidAnnotations
Android开发中,很多时候,我们都需要写一大段一大段的代码用来初始化控件,设置监听,一点都不简洁,这个时候,我们可以使一些强大的工具来帮助我们。
Android开发中,很多时候,我们都需要写一大段一大段的代码用来初始化控件,设置监听,一点都不简洁,这个时候,我们可以使一些强大的工具来帮助我们。
因为Swift支持类型推导,所以Swifi不会自动给变量赋值初值,也就是变量不会有默认值,所以?和!应运而生
POP动画极为流畅,秘密就在于POP通过CADisplayLink高达60FPS的特性,打造了一个游戏级的动画引擎。CADisplayLink是一个类似NSTimer的定时器,不同之处在于,NSTimer用于定义任务的执行周期,它的执行收到了CPU阻塞影响,而CADisplayLink则用于定义画面的重绘,动画的演变,基于帧(frames)的间隔。通过CADisplayLink程序的重绘速度设定到和屏幕刷新频率一致,因此可以得到流畅的交互动画。
Spring Animation提供了一个弹簧效果的动画,通过一系列参数的设置,完成风骚的动画
1 | // 创建一个二维平面沿X轴和Y轴进行缩放的动画 |
Decay Animation变现为一个衰减效果的动画,设置一个参数velocity(速率)
1 | POPDecayAnimation *anim = [POPDecayAnimation animWithPropertyNamed:kPOPLayerPositionX]; |
设置deceleration(负向速度)可以设置一个加速度量
Property Animation为属性动画,是Spring Animation和Decay Animation的父类
1 | POPBasicAnimation *anim = [POPBasicAnimation animation]; |
Android应用的主线程(UI线程)用作更新UI,不可以让主线程做费时操作,否则会出现ANR(App Not Response),一般处理耗时操作时都需要开启一个线程,线程执行结束,发送消息给主线程来更新UI
Crouton是一个显示提示信息的显示工具类,可以用来代替Toast。默认显示在窗口的顶部,可以按队列一个接着一个显示。
JSONModelJSONModel1 | @import "JSONModel.h" |
不需要在.m文件中填写任何东西
解析JSON字符串时
1 | NString* json = ... |
1 | { |
1 | @interface ProductModel : JSONModel |
1 | { |
1 | @interface OrderModel : JSONModel |
1 | { |
1 | @potocol ProductModel |
1 | { |
1 | @interface OrderModel : JSONModel |
1 | [JSONModel setGlobalKeyMapper:[ |
1 | [[JSONHTTPClient requestHeaders] setValue:@"MySecret" forKey:@"AuthorizationToken"]; |
1 | ProductModel* pm = [[ProductModel alloc] initWithString:jsonString error:nil]; |
1 | @implementation JSONValueTransformer (CustomTransformer) |
注:关于名字为id的属性,可以使用id命名,而且需要使用NSNumber或者NSString的类型来定义
因为AFNetworking从2.0默认不支持text/html

- (BOOL)application:(UIApplication *)applicationwillFinishLaunchingWithOptions:(NSDictionary *)launchOptions- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions- (void)applicationWillResignActive:(UIApplication *)application- (void)applicationDidEnterBackground:(UIApplication *)application- (void)applicationWillEnterForeground:(UIApplication *)application- (void)applicationDidBecomeActive:(UIApplication *)application- (void)applicationWillTerminate:(UIApplication *)application

onCreate()onStart()onRestart()onResume()onPause()onStop()onDestroy()onSaveInstanceState(Budle outState)onRestoreInstanceState(Budle savedInstanceState)iOS:
1 | - [AppDelegate application:didFinishLaunchingWithOptions:] |
Android:
1 | onCreate() |
iOS
1 | - [AppDelegate applicationWillResignActive:] |
Android
1 | onPause() |
iOS
1 | - [AppDelegate applicationWillEnterForeground:] |
Android
1 | onStart() |
iOS
1 | - [AppDelegate applicationDidEnterBackground:] |
Android
1 | onPause() |
Android、iOS的生命周期看着大同小异,但是差别还算比较大。
Android的Activity类似iOS中UIApplication + UIViewController。
iOS的应用像是一个全屏展开的窗口,UIApplication负责管理运行状态的生命周期,UIController负责管理视图,视图间靠通知传递数据
Android的App可以理解为Activity,Service,Centent Provider,BroadcastReceiver组成,可视部分主要由Activity组成,Activity要管理运行状态和视图,而且每个Activity的运行状态相对独立,四大组件之间、包括应用之间都可以通过Intent传递数据。

https://github.com/SeniorZhai/BlurAndroid
1 | public class Blur{ |