1. 程式人生 > >Kotlin&Anko基礎教程大全 一

Kotlin&Anko基礎教程大全 一

對於Kotlin的環境配置我就不說了,不知道的朋友可以看以下連結
Kotlin學習過程 一 Kotlin外掛安裝和第一個Kotlin app - z979451341的部落格 - CSDN部落格
http://blog.csdn.net/z979451341/article/details/73028391
在module的build.gradle里加

compile 'org.jetbrains.anko:anko-sdk15:0.8.3' // sdk19, sdk21, sdk23 are also available
compile 'org.jetbrains.anko:anko-support-v4:0.8.3'
// In case you need support-v4 bindings compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3' // For appcompat-v7 bindings

Anko的作用就是代替xml,我們使用Anko來完成佈局
1 。 先讓我們寫一個最簡單的例子來了解Anko的程式碼風格

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate
(savedInstanceState) verticalLayout { button("Ok") button("Cancel") } } }

這個例子非常簡單,沒有什麼程式碼,都是button(“”),甚至可以button(),而這樣的使用物件有TextView, EditText, Button , ImageView。這樣的配置預設是android:layout_width=”match_parent”
android:layout_height=”wrap_content”
還有就是verticalLayout相當於vertical的LinearLayout

2 .讓我說一下關於控制元件的Layouts 和 LayoutParams屬性

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        linearLayout {
            button("Login") {
                textSize = 26f
            }.lparams(width = wrapContent) {
                horizontalMargin = dip(5)
                topMargin = dip(10)
            }
        }

    }

}

屬性含義:
• horizontalMargin 同時設定 left 和 right margins,
• verticalMargin 同時設定 top 和 bottom
• margin 同時設定4個方向的 margins.
還有就是我們還可以使用relativeLayout,和我們在xml使用的一樣有些命令不能使用或者效果不同與linearLayout

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val ID_OK = 1

        relativeLayout {
            button("Ok") {
                id = ID_OK
            }.lparams { alignParentTop() }

            button("Cancel").lparams { below(ID_OK) }
        }


    }

}

3 。 給控制元件設定Listener

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)


        relativeLayout {
            button("Login") {
                onClick {
                    toast("Hello!")
                }
            }
        }


    }

}

感覺這程式碼和java程式碼沒啥大的區別
再舉個例子

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        relativeLayout {

            seekBar {
                onSeekBarChangeListener {
                    onProgressChanged { seekBar, progress, fromUser ->
                        toast("Hello!")
                    }
                }
            }
        }

    }

}

這樣一來就基本上可以說Listener使用Anko能夠完全實現

4 。 include的使用

import android.graphics.Color
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        relativeLayout {

            include<View>(R.layout.activity_main) {
                backgroundColor = Color.RED
            }.lparams(width = matchParent) { margin = dip(12) }
        }

    }

}

5 。Styles,能夠對ViewGroup裡的View賦予一樣的屬性

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.EditText
import org.jetbrains.anko.editText
import org.jetbrains.anko.style
import org.jetbrains.anko.verticalLayout

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        verticalLayout {
            editText {
                hint = "Name"
            }
            editText {
                hint = "Password"
            }
        }.style { view -> when(view) {
            is EditText -> view.textSize = 20f
        }}


    }

}

Anko就到此為止了,想要完全掌握還需去做點東西啊
再見

相關推薦

Kotlin&Anko基礎教程大全

對於Kotlin的環境配置我就不說了,不知道的朋友可以看以下連結 Kotlin學習過程 一 Kotlin外掛安裝和第一個Kotlin app - z979451341的部落格 - CSDN部落格 http://blog.csdn.net/z979451341

python 基礎教程 筆記

python第一章 python 基礎知識1.1 數字和數學表達式1.2 python 2.x 和python 3.x print的區別1.3 python 2.x 和 python 3.x input 的區別1.4 數學函數1.5 input 和 raw_input 區別第二章 列表和元組第三章 使用字符串

python基礎教程

底層 技術分享 包括 什麽事 inpu 內容 很多 運算 下劃線   之所以選擇py交易有以下幾點:1、python是膠水語言(跨平臺),2、python無所不能(除了底層),3、python編寫方便(notepad++等文本編輯器就能搞事情),4、滲透方面很多腳本都是py

kotlin web開發教程】從零搭建kotlin與spring boot開發環境

1.8 jre cond utf8 erro 2.0 .com 就會 一個tomcat IDEA中文輸入法的智能提示框不會跟隨光標的問題我用的開發工具是IDEA這個版本的IDEA有一個問題;就是中文輸入法的智能提示框不會跟隨光標解決這個問題的辦法很簡單,只有在安裝目錄下把J

MongoDB基礎教程

1。連線mongodb cmd進入mongo/bin目錄下,輸入: mongo 2。建立資料庫 如果資料庫不存在建立資料庫,否則開啟該資料庫。 use 資料庫名 EG:建立資料庫runoob use runoob 建立並檢視當前使用的資

Scala基礎教程):簡介、環境安裝

Scala基礎語法 如果有很好的瞭解Java語言,那麼將很容易學習Scala。 Scala和Java間的最大語法的區別在於;行結束符是可選的。考慮Scala程式它可以被定義為通過呼叫彼此方法進行通訊的物件的集合。現在,簡要地看看什麼叫做類,物件,方法和臨時變數。 ·    

OGRE 引擎官方基礎教程

先決條件: 1.本範例假設你能夠設定和編譯一個OGRE應用程式,具體方法見設定方法,並且具備一定的 C++語言程式設計基礎。 開始工作: 建立一個工程,命名為Tutorial,這裡採用 Visual Studio 2010,加入下列檔案 BaseApplication

CANoe入門基礎教程

CANoe是Vector公司的針對汽車電子行業的匯流排分析工具,現在我用CANoe7.6版本進行介紹,其他版本功能基本差不多。 硬體我使用的是CAN case XL. 1,CANoe軟體的安裝很簡單,先裝驅動,再裝軟體。安裝完成,插上USB,連線硬體,這樣在控制面板中

Junit 例項精講基礎教程) 認識Junit基本註解@Before、@After、@Test、@BeforeClass、@AfterClass

關於Junit,官文甚至不做過多解釋:Junit只是一個用於單元測試的小框架,是基於xUnit架構的一個實現。 系列教程基於Maven。 1. 引入Junit依賴 <dependencies> <dependenc

基礎教程文教你使用Rancher 2.3和Terraform執行Windows容器

本文來自Rancher Labs 介 紹 在Kubernetes 1.14版本中已經GA了對Windows的支援。這一結果凝結了一群優秀的工程師的努力,他們來自微軟、Pivotal、VMware、紅帽以及現在已經關閉的Apprenda等幾家公司。我在Apprenda工作時,不定時會為sig-windows社群

Thrift 基礎教程()安裝篇

div 更新 g++ pat 定義 init 環境 1.7 進行 1、Thrift簡單介紹 Thrift是一款由Fackbook開發的可伸縮、跨語言的服務開發框架,該框架已經開源而且增加的Apache項目。Thrift主要功能是:通過自己定義的Interface Def

ATOM基礎教程使用前端插件emmet(16)

自減 styles 工程 expand string 元素符號 asc value adding emmet簡介 http://blog.csdn.net/zsl10/article/details/51956791 emmet的前身是Zen coding,從事Web前

[學習筆記—Objective-C]《Objective-C-基礎教程 第2版》第十章 屬性

變量名 erl .text nonatomic syn split view 不能 -name 11.1 使用屬性值 @property float rainHandling; //表明此類具有float類型的屬性,其名稱為rainHandling

python基礎教程(十

list repeat stop row lis flatten ror 教程 [1] 叠代器 本節進行叠代器的討論。只討論一個特殊方法---- __iter__ ,這個方法是叠代器規則的基礎。 叠代器規則 叠代的意思是重復做一些事很多次---就像在循環中做的

Kotlin開發基礎從0開始(

code ... 多說 lang 學習 function ria lis lac 為什麽學習kotlin kotlin在今年的Google IO 上正式被確認為Android的官方開發語言,想必原因大家也能猜到一二,一是Google與oracle關於Java相關的版權相關的

讀書筆記--《Python基礎教程第二版》--第十章 文件和素材

ja第十一章 文件和素材11.1 打開文件 open函數用來打開文件,語法如下: open(name[,mode[,buffering]]) f = open(r‘/home/python/somefile.txt‘)11.1.1 文件模式r 讀模式w 寫模式a 追加模式b 二進制模式(可添加到其他的模式

JavaScript基礎入門教程

構造 圖片 def type 屬於 string 意思 原則 原始類型 js的數據類型   雖然js屬於弱類型語言,但其總共有6種數據類型。弱類型的意思是定義的變量沒有類型的區分,比如先執行 var num=123; 定義了一變量num存儲整數,可接下來執行 num="he

Kotlin學習與實踐 (基礎

eat 代碼塊 數據 eas 特性 neu 簡潔 跟著 pla 1、 函數和變量 直奔主題不啰嗦 * a.關鍵字 fun 用來聲明函數。* b.參數的類型寫在參數名字的後面。* c.函數可以定義再文件的最外層,不需要把它放入類中。* d.數組就是類。 和Java不同Kotl

Python基礎教程筆記十:Python Number(數字)

顯示 sta ron nbsp num 下一個 組成 有效 位數 Python 支持四種不同的數值類型: 整型(Int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。 長整型(long integers) - 無限大小的整數,整數最後是一個大寫或小寫的L。

機器學習實戰教程):線性回歸基礎篇(上)

學習 reg style spa 目標 pub auto 機器 輸入 一 什麽是回歸?   回歸的目的是預測數值型的目標值,最直接的辦法是依據輸入,寫入一個目標值的計算公式。   假如你想預測小姐姐男友汽車的功率,可能會這麽計算:               Ho