編輯:關於Android編程
Java和Android這對搭檔目前也在風雨飄搖中。
技術圈子的事,往往被商業利益牽著鼻子走。
世事莫過於此。
目前Android應用開發已經使用到Java7,但對Java8的支持,還遙遙無期。
對新技術體驗者來說,Java8提供了很多不錯的特性。
其中最引人注目的是lambda表達式,以及Stream API,Date Time API,對並發的增強。
Android應用開發完全支持Java8目前尚沒有好的解決方案,但對Java8的民間支持有對應的方案:
lambda表達式的向後兼容:https://github.com/orfjackal/retrolambda
stream API:http://sourceforge.net/projects/streamsupport/
new time API:http://www.threeten.org/
但我個人覺得,只有到了非用不可的地步,才會去在生產中使用它們。
而對於技術學習,這些都是很好的素材。
Java8 for Android的結論就是,目前不支持,但民間有相應的支持項目。要想用Java8的新特性在Android應用開發上,實屬不易。
Java作為高級語言,開發效率上一直高於那些Native語言。但它已經20多歲了,在某些場合下已經不太適用了。
圍繞著JVM,世界上出現了很多新的語言。
比如Groovy,Android Studio使用的Gradle構建工具就是基於Groovy的。
比如Clojure,是純粹的函數式編程語言。
比如Scala,強項是用來做並行運算。
還有,今天另一個主角,kotlin。
在其官網有這樣一段話:
Statically typed programming language
for the JVM, Android and the browser
100% interoperable with Java
其要表達三件事:
1、它是基於JVM的靜態類型語言
2、可以用於Android和web開發
3、百分百與Java交互
為什麼選擇kotlin?
官網給出四個答案:
1、簡潔
從語言層面大大簡化了使用的繁瑣性。比如對lambdas的支持讓代碼量減少,習慣後會覺得這樣更易讀。
2、安全
語言級避免了令人诟病的空指針異常,等等。
3、多用途
構建服務器應用、安卓app、web應用
4、與Java的交互性
實踐中你會發現這樣有多便利
kotlin還是比較新的語言,目前的版本是1.0beta。它抓住了Java語言發展這麼多年無法改變的一些痛點,讓這個語言一出生就脫離窘境。
下面是Linc根據《Kotlin for android Developers》在Android studio上建的第一個kotlin Demo。
1、安裝kotlin插件
Go to Android Studio的Settings中Plugins,然後安裝Kotlin、Anko DSL Preview和Kotlin Android Extensions三個插件。
如下圖:
2、新建項目,配置gradle
項目下的build.gradle:
buildscript {
ext.support_version = '23.0.0'
ext.kotlin_version = '1.0.0-beta-4589'
ext.anko_version = '0.8.1'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
app下的build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.linc.kotlinhelloworld"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.0'
compile "com.android.support:recyclerview-v7:$support_version"
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "org.jetbrains.anko:anko-sdk15:$anko_version"
compile "org.jetbrains.anko:anko-support-v4:$anko_version"
}
buildscript {
repositories {
jcenter() }
dependencies {
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
3、使用kotlin編程
anko的加入,讓我們在layout中使用的控件省去findViewById就可以直接使用。比如:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
forecast_list.layoutManager = LinearLayoutManager(this);
forecast_list.adapter = ForecastListAdapter(items)
toast("hello toast.")
}
按鍵事件可以用lambda表達式,如下:
btnTest.setOnClickListener({btnTest->toast("button click!")})
還可以將其簡化成:
btnTest.setOnClickListener{toast("button click!")}
更多語法糖請參考官方文檔:https://kotlinlang.org/docs/reference/
參考:
1、android上使用lambda:http://juude.net/lambdajava/
這篇博客我們來介紹一下剩下的最後一個創建型模式:原型模式(Prototype Pattern)。該模式有一個樣板實例,用戶從這個樣板對象中復制出一個內部屬性一致的對象,這
翻譯自http://www.androidhive.info/2014/10/android-building-group-chat-app-using-sockets
SharedPreference方面的內容還算是比較簡單易懂的,在此還是主要貼上效果與代碼,最後也是附上源碼。首先是輸入賬號admin,密碼123,選擇記住密碼登陸。登陸
備注:代碼已傳至https://github.com/yanzi1225627/FragmentProject_QQ 歡迎fork,現在來審視這份代碼,很多地方寫的不太好