《Android / iOS 開發異同概覽》

 

Android / iOS 開發異同概覽

- 簡書0 系統概覽 0.1 Android 0.1.1 起源 Android 是一種基於 Linux 的自由及開放源代碼的操做系統,主要使用於移動設備如智能手機和平板電腦,由 Google...java

 

 

2018.07.05 04:31:46 字數 2,809 閱讀 242react

0 系統概覽

0.1 Android

0.1.1 起源

Android 是一種基於 Linux 的自由及開放源代碼的操做系統,主要使用於移動設備如智能手機和平板電腦,由 Google 公司和開放手機聯盟領導及開發。linux

0.1.2 架構

 

 

Android 系統架構android

0.1.2.1 應用層

主要使用 java 語言開發的應用程序,如通信錄、瀏覽器等各類應用 appios

0.1.2.2 應用框架層

視圖(View):能夠用來構建應用程序,如列表,文本框,WebView 瀏覽器組件等。
內容提供器(Content Provider):對外部其餘應用提供數據
資源管理器(Resource Manager):提供非代碼資源的訪問,如本地字符串,圖形,佈局文件等。
通知管理器(Notification Manager):使得應用程序能夠在狀態欄中顯示自定義的提示信息。
活動管理器( Activity Manager):用來管理應用程序生命週期並提供經常使用的導航回退功能。git

0.1.2.3 系統運行庫

Android 包含一些 C/C++ 庫,這些庫能被 Android 系統中不一樣的組件使用。它們經過 Android 應用程序框架爲開發者提供服務。程序員

0.1.2.3.1 程序庫
  • 系統 C 庫 - 標準 C 系統函數庫 Libc,它是專門爲基於 Embedded linux 的設備定製的。
  • 媒體庫 - 基於 PacketVideo OpenCORE。該庫支持多種經常使用的音頻、視頻格式回放和錄製,同時支持靜態圖像文件。編碼格式包括 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
  • SQLite - 一個對於全部應用程序可用,功能強勁的輕型關係型數據庫引擎。
0.1.2.3.2 Android 運行庫

Android 包括了一個核心庫,該核心庫提供了 JAVA 編程語言核心庫的大多數功能。
  每個 Android 應用程序都在它本身的進程中運行,都擁有一個獨立的 Dalvik 虛擬機實例。Dalvik 被設計成一個設備能夠同時高效地運行多個虛擬系統。 Dalvik 虛擬機執行 (.dex) 的 Dalvik 可執行文件,該格式文件針對小內存使用作了優化。同時虛擬機是基於寄存器的,全部的類都經由 JAVA 編譯器編譯,而後經過 SDK 中 的 "dx" 工具轉化成. dex 格式由虛擬機執行。
  Dalvik 虛擬機依賴於 linux 內核的一些功能,好比線程機制和底層內存管理機制。github

0.1.2.4 Linux 內核

Android 的核心繫統服務依賴於 Linux 2.6 內核,如安全性,內存管理,進程管理, 網絡協議棧和驅動模型。 Linux 內核也同時做爲硬件和軟件棧之間的抽象層。objective-c

0.2 iOS

0.2.1 起源

iOS 是由蘋果公司開發的移動操做系統。蘋果公司最先於 2007 年 1 月 9 日的 Macworld 大會上公佈這個系統,最初是設計給 iPhone 使用的,後來陸續套用到 iPod touch、iPad 以及 Apple TV 等產品上。iOS 與蘋果的 Mac OS X 操做系統同樣,屬於類 Unix 的商業操做系統。數據庫

0.2.2 架構

 

 

iOS 系統架構

0.2.2.1 可觸摸層

Cocoa Touch 是可觸摸層,這一層爲咱們的應用程序開發提供了各類有用的框架,而且大部分與用戶界面有關,本質上來講它負責用戶在 iOS 設備上的觸摸交互操做。

0.2.2.2 多媒體層

Media 是媒體層,經過它咱們能夠在應用程序中使用各類媒體文件,進行音頻與視頻的錄製,圖形的繪製,以及製做基礎的動畫效果。

0.2.2.3 核心服務層

Core Services 是核心服務層,能夠經過它來訪問 iOS 的一些服務。

0.2.2.4 核心操做系統層

Core OS 是位於 iOS 系統架構最下面的一層是核心操做系統層,它包括內存管理、文件系統、電源管理以及一些其餘的操做系統任務。它能夠直接和硬件設備進行交互。做爲 app 開發者不須要與這一層打交道。

1 應用程序的開發語言及開發環境

1.1 Android

1.1.1 編程語言

Android 使用的語言主要是 Java,也能夠經過 jni 來運行 C 語言編寫的代碼或者庫,從而提升運行效率。
  Kotlin 是 Google 推薦的新的編程語言

1.1.2 開發環境

上古時代:集成了 android 開發插件的 Eclipse,使用的是 Ant 構建工具
  摩登時代:Android Studio,源自 jetbrain 的 idea 開發工具 ,使用 gradle 構建項目

1.1.3 操做系統要求

windows / linux / mac

 

 

Android Studio

1.2 iOS

1.2.1 編程語言

iOS 使用的語言主要是 objective-c 語言,發明於上世紀八十年代
  Swift 是這幾年開始推薦的語言

1.2.2 開發環境

Xcode 開發環境,必須使用 mac 系統才能開發。

1.1.3 操做系統要求

mac

 

 

Xcode

2 項目代碼組成概覽

2.1 Android

Android 程序主要有如下幾個部分組成:

2.1.1 activity

  1. 做爲一個 「窗體 / 頁面」,承載着不一樣的 view / fragment 等組件,是可見組件的承載者
  2. 一個有界面的程序,會在配置文件中指定系統入口窗體。
  3. 通常來講,activity finish 掉以後,其中的代碼也就運行結束了。
  4. activity 須要註冊到程序的聲明文件中,才能夠被使用
  5. activity 的跳轉可以使用 startActivity(intent) 的方式。跳轉方式有顯式指定和隱式指定,能夠打開其餘應用程序的 activity,作到應用程序之間的數據交互,intent 也能夠攜帶數據。
  6. activity 是經過系統來調用的,不能夠進行 new 的操做。
  7. 通常能夠在 activity 的生命週期的回調函數中,添加代碼,如在 onCreate 函數中添加布局文件

2.1.2 service

  1. 不可見組件,一些常駐後臺的功能,能夠添加到 service 中運行,從而減少被後臺殺死的概率。

2.1.3 content provider

  1. 內容提供者,能夠對其它程序提供數據,經過在配置文件中聲明 + 代碼的方式,應用程序能夠向外部提供數據

2.1.4 application

  1. 一個應用程序只有一個 application
  2. 能夠在此 application 的回調函數中進行編碼,如初始化某些數據等。

2.1.5 R

  1. R 文件通常存放於特定的文件夾中,如圖片、字符串、尺寸等都放置在必定格式的 xml 下,這些 xml 資源文件在打包時,會被生成的 R.java 文件所引用,並生成對應的 int 型的 id 值,程序運行時,能夠經過 R.xx.xxx 這樣的方式,找到資源文件,並經過系統提供的如 getString(R.xx.xxx) 這樣的 api 獲取 String 等資源
  2. 佈局文件存放在資源文件夾中的 layout 文件夾下,以 R.layout.xxx 的方式引用,activity 或者 view 的顯示,一般能夠經過加載 layout 文件來解析顯示界面

 

 

Android 工程

 

 

代碼展開

2.2 iOS

iOS 程序主要有如下幾個部分組成:

2.1.1 UIViewController

  1. 做爲一個 「窗體 / 頁面」,承載着不一樣的 UIView 等組件,是可見組件的承載者
  2. 一個有界面的程序,可在 AppDelegate 中使用代碼的方式指定程序第一個界面,也能夠在配置界面中指定第一個 storyboard,並在對應的 storyboard 中指定第一個 UIViewController
  3. UIViewController 具備生命週期回調函數,能夠在對應的回調函數中添加相關代碼,如佈局,處理數據等,主要的回調函數有:
[UIViewController loadView]
[UIViewController viewDidLoad]
[UIViewController viewWillAppear:]
[UIViewController shouldAutorotateToInterfaceOrientation:]
[UIViewController viewWillLayoutSubviews]
[UIView layoutSubviews]
[UIViewController viewDidLayoutSubviews]
[UIViewController viewDidAppear:]
  1. 對於普通的 UIViewController,可使用下面的方法進行界面之間的跳轉:
-(void) toMainViewControllerAfterSeconds{
    MainViewController *mainVC = [[MainViewController alloc] init];
    [self presentViewController:mainVC animated:YES completion:nil]; }

其中的數據能夠經過 UIViewController 對象自定義屬性 / 變量來傳遞

  1. 特殊的 UINavigationController

UINavigationController 用來管理視圖控制器,在多視圖控制器中經常使用。它以棧的形式管理視圖控制器,管理視圖控制器個數理論上不受限制 (實際受內存限制),push 和 pop 方法來彈入彈出控制器,最多隻能顯示一個視圖控制器,那就是處於棧頂的視圖控制器。
  通常狀況下,UINavigationController 最少管理一個控制器,即最少有一個根視圖控制器或者叫作棧底視圖控制器。固然也有例外,若是不給它添加視圖控制器也不會報錯,界面上也有視圖,由於 UINavigationController 繼承自 UIViewController,也有本身的 view,只不過默認狀況下. view.backgroundColor 爲 nil,即透明的。

2.1.2 程序入口

Android 中,程序入口是由 AndroidManifest.xml 文件中響應的 xml 配置指定的 application 以及程序的 activity 入口。iOS 中,程序的入口是 main.h 文件

#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }

在這裏指定了程序的代理,AppDelegate 類,至關因而 android 的 application 類。

#import "AppDelegate.h" #import "SplashViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; SplashViewController *appStartController = [[SplashViewController alloc] init]; self.window.rootViewController = appStartController; [self.window makeKeyAndVisible]; return YES; } - (void)applicationWillResignActive:(UIApplication *)application { } - (void)applicationDidEnterBackground:(UIApplication *)application { } - (void)applicationWillEnterForeground:(UIApplication *)application { } - (void)applicationDidBecomeActive:(UIApplication *)application { } - (void)applicationWillTerminate:(UIApplication *)application { } @end

AppDelegate 的頭文件:

#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @end

2.1.3 資源文件

iOS 中的資源文件能夠放在任意一個文件夾下,但特色是整個工程不能有重複的文件名。在圖片適配方面,iOS 採用圖片名稱 +@2x.png 的方式,適配大屏手機。Android 採用的是放置在不一樣的資源文件夾下,如 drawable drawable-hdpi drawable-xxhdpi 等,同一個相同圖片文件的名稱必須相同。

2.1.4 添加 view

Android 添加 view 採用的是使用 layout 文件的方式,也可使用代碼的方式,即 addView()。
  iOS 可使用 xcode 提供的 storyboard 工具,來拖動調整控件,並經過在 storyboard 文件中指定對應的 viewcontroller 類,來對 viewcontroller 進行 view 的佈局,也可使用代碼 addSubView 的方式進行添加,因爲 iOS 的佈局代碼佈局方式比較繁瑣,通常採用第三方的代碼佈局方案,如 masonry:

[_statusBarView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.view).offset(0); make.size.mas_equalTo(CGSizeMake(self.view.frame.size.width, UI_STATUS_BAR_HEIGHT)); }];

3. 引用開源庫的方式

3.1 iOS

可採用 pod 的方式引用

  1. 在項目根目錄下新建一個 Podfile
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'TestOC' do pod 'AFNetworking', '~> 2.6.3’ pod 'Masonry' pod 'Toast', '~> 3.1.0' pod 'JSONModel' pod 'SDWebImage', '~>3.8' end
  1. 在命令行下使用 pod install 便可安裝,而後使用 xcode 打開 iosProjectName.xcworkspace 文件

3.2 Android

可採用 gradle 的方式引用

  1. 在項目的 build.gradle 文件中,添加 dependencies、插件等
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'TestOC' do pod 'AFNetworking', '~> 2.6.3’ pod 'Masonry' pod 'Toast', '~> 3.1.0' pod 'JSONModel' pod 'SDWebImage', '~>3.8' end
  1. 在命令行下使用 pod install 便可安裝,而後使用 xcode 打開 iosProjectName.xcworkspace 文件
apply plugin: 'com.android.application'
apply plugin: 'io.fabric' apply plugin: 'com.neenbedankt.android-apt' android { useLibrary 'org.apache.http.legacy' dexOptions { jumboMode = true javaMaxHeapSize = "6g" dexInProcess = true } compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "org.wordpress.android" versionName "alpha-62" versionCode 426 minSdkVersion 16 targetSdkVersion 25 multiDexEnabled true vectorDrawables.useSupportLibrary = true buildConfigField "boolean", "AZTEC_EDITOR_AVAILABLE", "true" buildConfigField "boolean", "SHARING_FEATURE_AVAILABLE", "false" buildConfigField "boolean", "VIDEO_OPTIMIZATION_AVAILABLE", "false" } productFlavors { vanilla { buildConfigField "boolean", "AZTEC_EDITOR_AVAILABLE", "false" } zalpha { applicationId "org.wordpress.android" buildConfigField "boolean", "SHARING_FEATURE_AVAILABLE", "true" buildConfigField "boolean", "VIDEO_OPTIMIZATION_AVAILABLE", "true" } wasabi { applicationId "org.wordpress.android.beta" minSdkVersion 21 buildConfigField "boolean", "SHARING_FEATURE_AVAILABLE", "true" } } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' } debug { minifyEnabled false buildConfigField "String", "APP_PN_KEY", "\"org.wordpress.android.debug.build\"" buildConfigField "boolean", "VIDEO_OPTIMIZATION_AVAILABLE", "true" ext.enableCrashlytics = false } } } dependencies { compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true; } compile 'com.google.code.gson:gson:2.6.+' compile 'org.ccil.cowan.tagsoup:tagsoup:1.2.1' compile 'com.android.support:support-compat:25.3.1' compile 'com.android.support:support-core-ui:25.3.1' compile 'com.android.support:support-fragment:25.3.1' compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:cardview-v7:25.3.1' }

4. 著名的開源項目

1. ios

項目名稱 項目信息
AFNetworking 做者是 NSHipster 的博主, iOS 開發界的大神級人物, 畢業於卡內基 · 梅隆大學, 開源了許多牛逼的項目, 這個即是其中之一, AFNetworking 採用 NSURLConnection + NSOperation, 主要方便與服務端 API 進行數據交換, 操做簡單, 功能強大, 如今許多人都用它取代 ASIHTTPRequest
GPUImage 一款強大的圖片濾鏡工具, 支持自定義濾鏡, 可用來實時處理圖片和視頻流, 做者是 SonoPlot 公司的 CTO, 在很小的時候便開始接觸編程, 他在 SO 上面的回答也有不少值得閱讀, GPUImage 這個項目從 2012 年開始, 使用 OpenGL 圖形程序接口編寫, 性能很是好, 如今不少 iOS 程序員都用它來實現 iOS 的模糊效果
SDWebImage 做者 Olivier Poitrey 是 Dailymotion 的 CTO, 擁有多個不錯的開源項目, 此項目經常使用於對從 Web 端接受到的圖片進行緩存, 是 UIImageView 的擴展, 應用起來比較簡單
RestKit 主要用於 iOS 上網絡通訊, 容許與 RESTful Web 服務交互, 經常使用於處理 API, 解析 JSON, 映射響應對象等操做, 簡單易用, 方便你把全部精力都放在對數據的操做上
ReactiveCocoa 由 GitHub 工程師們開發的一個應用於 iOS 和 OS X 開發的函數響應式編程新框架, Matt 稱其爲 "An open source project that exemplifies this brave new era for Objective-C", 也有人說它是 Cocoa 的將來, 具體可看唐巧寫的這篇文章
three20 由 Facebook iOS 客戶端衍生出的一款 iPhone 框架, 內置許多豐富的功能, 有豐富的界面, 對底層的操做便捷, 爲開發者省下了不少時間, 但如今已經中止了更新, 一個 PR 把代碼刪得乾乾淨淨, 不要好奇去點開 Files changed, 我點開後該頁面直接卡死, three20 當中的一位做者建立了 Nimbus, 算是 three20 的一個替代品
MBProgressHUD 做者 Matej Bukovinski 是一位全棧工程師, UI/UX 設計師, 此項目是一款提示框第三方庫, 幫助開發者快速應用到項目中)
MagicalRecord 做者是 Coursera 的 iOS 工程師, 該項目創做靈感來自於 Ruby on Rails 的 Active Record, 主要爲方便操做 CoreData 而生, 幫助清除 CoreData 引用的代碼, 協助方便 CoreData 的工做
FMDB 一個對 SQLite 進行封裝的庫, 使用起來方便, 簡單
Mantle 做者是 GitHub 的員工, 文檔寫的很清楚: Mantle makes it easy to write a simple model layer for your Cocoa or Cocoa Touch application, 主要用來將 JSON 數據模型化爲 Model 對象, 唱吧在前段時間也改用 Mantle 了.
FlatUIKit 收集了不少扁平化 UI 的 iOS 組件, 方便使用
ASIHTTPRequest 一個輕量級的 iOS 網絡通訊類庫, 基於 CFNetwork 框架開發, 但如今已經中止更新, 多數開發者改用 AFNetworking 替代)
FastImageCache Path 公司出品的 iOS 庫, 做者 Mallory Paine 是蘋果前員工, 此類庫適用於在滾動時快速顯示圖像, 高速持久是其最大的特色
Masonry 一個輕量級的佈局框架, 同時支持 iOS 和 Mac OS X, 語法優雅, 幫助開發者快速適配不一樣分辨率的 iOS 設備
Shimmer Facebook 推出的一款具備閃爍效果的第三方控件, 供它旗下一款名爲 Paper 的應用使用, 安裝使用整個過程都十分簡單
SVProgressHUD 又一款輕量級的 iOS 第三方控件, 用於顯示任務加載時的動畫, 很是輕便, 容易使用
Slate 一款窗口管理應用程序, 但在兩年前就已經中止更新了
JSONKit 主要用於解析 JSON, 適用於 iOS6 如下環境, 自從 iOS5 開始 Apple 官方給出了 NSJSONSerialization API, 自此你們都用官方的了

2 Android

項目名稱 項目簡介
react-native 這個是 Facebook 在 React.js Conf 2015 大會上推出的基於 JavaScript 的開源框架 React Native, 該框架結合了 Web 應用和 Native 應用的優點, 可使用 JavaScript 來開發 iOS 和 Android 原生應用
Android-Universal-Image-Loader ImageLoader 是最先開源的 Android 圖片緩存庫, 強大的緩存機制, 早期被普遍 Android 應用使用, 至今仍然有不少 Android 開發者在使用
RxJava RxJava 是一個在 Java VM 上使用可觀測的序列來組成異步的, 基於事件的程序的庫, 簡單來講它就是一個實現異步操做的庫, RxJava 的優勢在於一個詞 "簡潔", 使用它就算你程序邏輯有多麼複雜, 它依然可以保持簡潔易懂
retrofit Retrofit 是 Square 公司出品的 HTTP 請求庫, 同時是 Square 是最先開源項目之一, Retrofit 是目前 Android 最流行的 Http Client 庫之一, 目前版本是 Retrofit2.0 Beta4, 愈來愈多 Android 開發者開始使用這個請求庫了
okhttp OkHttp 是 Square 公司出品的 HTTP 另外一個請求庫, Google 不推薦人們使用 HttpClient, 但是 HttpURLConnection 實在是太難用了, 所以不少人使用了 OkHttp 來解決這問題, 聽說 Android4.4 的源碼中能夠看到 HttpURLConnection 已經替換成 OkHttp 實現呢
SlidingMenu(不建議使用) 一個側滑菜單開源庫, 在 Google 本身原生態的側滑菜單 NavigationDrawer 沒有出現以前, 這個庫就已經被普遍使用, 但是到如今這個庫已經被放棄了
picasso Picasso 是 Square 公司出品的一款圖片緩存庫, 主導者是 JakeWharton 大神
android-best-practices Android 開發最佳實踐, 裏面所介紹的經驗都是來自於 Futurice 公司 Android 開發者, 介紹內容有 Android 開發規範, 架構, 佈局技巧, 以及使用一些有助於快速開發相關工具等等, 很是適合新手去學習
EventBus EventBus 是 Android 事件管理總線, 使用它能夠替帶 Android BroadCast, BroadCastReceiver, Handler 在 Activity, Fragment, Service, 線程之間傳遞消息, 大大簡化了事件傳遞邏輯
android-async-http Android-Async-Http 是 Android 一款老牌異步請求庫, 專門對 Android 在 Apache 的 HttpClient 基礎上構建的異步 http 鏈接, 該庫有不少特徵, 例如: 庫的 size 小, 支持文件上傳不需使用第三方庫支持, 內部使用線程池來處理併發, 等等
fresco Fresco 是 FaceBook 公司出品的一款圖片緩存庫, Fresco 是一個強大的圖片加載組件, 支持加載 Gif 圖和 WebP 格式, 支持 Android2.3(API level 9) 及其以上系統, Fresco 中設計了 Image pipeline 和 Drawees 兩個模塊各施其職, 使得圖片完美加載出來, 想知道更多 image pipeline 和 Drawees 有關於它的特性, 能夠到它官方平臺看介紹
zxing ZXing 是二維碼領域中名氣最大的開源項目, 它提供了多個平臺的二維碼 / 條形碼掃描解決方案, 擁有掃描快, 識別率高, 使用簡單等特色
leakcanary LeakCanary 是 Square 公司出的一款檢測內存泄露工具, 該工具能幫助你在開發階段方便的檢測出內存泄露的問題, 使用起來很是簡單方便
butterknife 由 JakeWharton 大神開發出來的, ButterKnife 是 View 注入框架, 使用它爲了簡寫不少 findViewById 代碼, 同時還支持 View 的一些事件處理函數
MPAndroidChart MPAndroidChart 是一款強大的 Android 圖表庫, 支持各類各樣圖表顯示, 能想到的圖表樣式這裏幾乎都有, 圖表還支持選擇, 拖放和縮放動畫效果
ActionBarSherlock (不建議使用) ActionBarSherlock 這個庫是 JakeWharton 大神開發出來支持 Android3.0 如下版本的, 後來慢慢的 Google 也提供了 AppCompat 庫來支持 Android3.0 如下版本使用 ActionBar, 所以做者不建議咱們再使用這個庫了
androidannotations AndroidAnnotations 是一個可以讓你快速進行 Android 開發的開源框架, 它能讓你專一於真正重要的地方, 使代碼更加精簡, 使項目更加容易維護, 它的目標就是 "Fast Android Development.Easy maintainance"
ViewPagerIndicator 由 JakeWharton 大神開發出來的一個 ViewPager 指示器, 使用起來簡單方便, 可高度定製, 開發出各類各樣動畫效果
glide Glide 是 Google 員工的開源項目, 普遍應用於 Google 一些 App 上, 在 2014 年 Google I/O 大會上被推薦使用, Glide 和 Picasso 被人拿來比較研究過, Glide 與 Picasso 有 90% 的類似度, 但在一些細節上仍是有點區別的, 各有各優缺點看君選擇
HomeMirror 開發者是由一名程序媛 Hannah Mittelstaedt , HomeMirror 是一款 Android 鏡子應用, 目前它能實現日期, 時間, 天氣, 生日信息, 事件提醒器, 騎車天氣的推薦, 股票信息, XKCD 漫畫網站的新帖等等
Android-PullToRefresh(不建議使用) 一個強大的拉動刷新開源項目, 支持各類控件下拉刷新, ListView, ViewPager, WebView, ExpandableListView, GridView, ScrollView, Horizontal ScrollView, Fragment 上下左右拉動刷新, 不過如今這個項目已經中止維護更新了, 推薦使用 Android-Ultra-Pull-To-Refresh
MaterialDesignLibrary 這個庫控件都是遵循了 Google Material Design 設計規範開發出來, 例若有: Flat Button, Rectangle Button, CheckBox, Switch, Progress bar circular indeterminate 等等
PhotoView PhotoView 是 ImageView 的子類, 支持全部 ImageView 的源生行爲, 例如: 支持 Pinch 手勢自由縮放, 支持雙擊放大 / 還原, 支持平滑滾動等等, 而且很是方便的與 ImageLoader/Picasso 之類的網絡圖片讀取庫集成使用, 還方便的與 ViewPager 等一樣支持滑動手勢的控件集成
RxAndroid 由 JakeWharton 大神主導開發的項目, RxAndroid 是 RxJava 的一個針對 Android 平臺的擴展, 主要用於 Android 開發

未完待續

相關文章
相關標籤/搜索