android中的一些小tip(一)

最近把kotlin學(xué)習(xí)了一遍酪惭,參照谷歌的安卓官網(wǎng)教程進(jìn)行自學(xué)安卓希痴,在此記錄學(xué)習(xí)過程中遇到的一些問題,以及一些好用的東西春感。
本人從事iOS開發(fā)已經(jīng)四年多了砌创,斷斷續(xù)續(xù)也學(xué)習(xí)了前端的一些框架虏缸,React、Flutter嫩实、Taro刽辙。將會(huì)把安卓開發(fā)過程中的一些知識(shí)點(diǎn)匯集在這里,共勉甲献,共同進(jìn)步宰缤。

安卓中的布局

布局在以 xml 后綴文件中,可以在 Design 的模式下晃洒,通過拖動(dòng) Palette 面板中的控件來快速創(chuàng)建一些界面慨灭。也可以切換到 code 模式下,手寫布局文件進(jìn)行布局球及。

安卓中的樣式

安卓中的樣式可以在 Design 的模式下氧骤,使用右側(cè)面板進(jìn)行 Attributes 和一些基礎(chǔ)設(shè)置,可以將設(shè)置 padding 桶略、margin 语淘、字體大小 等,可以通過抽取


抽取樣式

可以直接導(dǎo)出樣式


導(dǎo)出樣式

管理字符串
統(tǒng)一管理字符串

安卓中的圖片兼容

展開res文件夾际歼,然后展開drawable惶翻,默認(rèn)情況下這些文件為矢量可繪制對(duì)象。矢量可繪制對(duì)象相對(duì)于位圖圖像格式(如PNG)的好處是鹅心,矢量可繪制對(duì)象可以縮放而不損失質(zhì)量吕粗。同樣,矢量可繪制對(duì)象通常是一個(gè)比位圖格式的相同圖像小的文件旭愧。

關(guān)于矢量可繪制對(duì)象的重要注意事項(xiàng)是API 21及更高版本支持它們颅筋。但是,應(yīng)用程序的最低SDK設(shè)置為API19输枯。如果您在API 19設(shè)備或仿真器上嘗試過該應(yīng)用程序议泵,則會(huì)發(fā)現(xiàn)該應(yīng)用程序似乎可以正常構(gòu)建和運(yùn)行。那么這是如何工作的呢桃熄?

一先口、打開 build.gradle(Module:app)。將此行添加到以下defaultConfig部分:

vectorDrawables.useSupportLibrary = true

二瞳收、點(diǎn)擊右上角的 Sync Now
三碉京、打開 .xml 文件,在根控件中輸入

xmlns:app="http://schemas.android.com/apk/res-auto"

四螟深、在使用<ImageVIew>的部分將 android:src 修改為
app:srcCompat="@drawable/empty_dice"

生成并運(yùn)行應(yīng)用程序谐宙。不會(huì)在屏幕上看到任何不同,但是現(xiàn)在應(yīng)用程序無論在何處運(yùn)行都無需使用生成的PNG文件來生成圖像界弧,這意味著應(yīng)用程序文件更小凡蜻。


這一段摘自官方 Kotlin

使用Timber打印一些信息

要使用Timber搭综,需要引入依賴,在dependencies中中添加以下依賴
implementation 'com.jakewharton.timber:timber:4.7.1'
具體版本號(hào)可依據(jù)github上最新的版本修改以下咽瓷。
使用如下:

Timber.i("onDestroy Called")
等效于
Log.i("你的activity","onDestroy Called")

使用Lifecycle進(jìn)行生命周期管理

一些場景需要用到如計(jì)數(shù)器等需要生命周期管理的對(duì)象時(shí)设凹,在配套的 onStart 和 onStop 都要寫一些膠水代碼,如果需要管理很多類似的代碼時(shí)茅姜,則非常容易出錯(cuò)闪朱。此時(shí)Lifecycle將非常便捷

如下:

class DessertTimer(lifecycle: Lifecycle) : LifecycleObserver {

    // The number of seconds counted since the timer started
    var secondsCount = 0

    /**
     * [Handler] is a class meant to process a queue of messages (known as [android.os.Message]s)
     * or actions (known as [Runnable]s)
     */
    private var handler = Handler()
    private lateinit var runnable: Runnable

    init {

        lifecycle.addObserver(this)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun startTimer() {
        // Create the runnable action, which prints out a log and increments the seconds counter
        runnable = Runnable {
            secondsCount++
            Timber.i("Timer is at : $secondsCount")
            // postDelayed re-adds the action to the queue of actions the Handler is cycling
            // through. The delayMillis param tells the handler to run the runnable in
            // 1 second (1000ms)
            handler.postDelayed(runnable, 1000)
        }

        // This is what initially starts the timer
        handler.postDelayed(runnable, 1000)

        // Note that the Thread the handler runs on is determined by a class called Looper.
        // In this case, no looper is defined, and it defaults to the main or UI thread.
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun stopTimer() {
        // Removes all pending posts of runnable from the handler's queue, effectively stopping the
        // timer
        handler.removeCallbacks(runnable)
    }
}
比較好用的一個(gè)快捷鍵

多行相同的內(nèi)容同時(shí)編輯時(shí)如下:
AS: control + G
VS: command + shift + L

多行編輯

VS: option + shift + ↓ 為快速復(fù)制快捷鍵
快速復(fù)制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钻洒,隨后出現(xiàn)的幾起案子奋姿,更是在濱河造成了極大的恐慌,老刑警劉巖素标,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件称诗,死亡現(xiàn)場離奇詭異,居然都是意外死亡头遭,警方通過查閱死者的電腦和手機(jī)寓免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來计维,“玉大人袜香,你說我怎么就攤上這事■昊蹋” “怎么了蜈首?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長欠母。 經(jīng)常有香客問我欢策,道長,這世上最難降的妖魔是什么赏淌? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任踩寇,我火速辦了婚禮,結(jié)果婚禮上六水,老公的妹妹穿的比我還像新娘俺孙。我一直安慰自己,他們只是感情好缩擂,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布鼠冕。 她就那樣靜靜地躺著添寺,像睡著了一般胯盯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上计露,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天博脑,我揣著相機(jī)與錄音憎乙,去河邊找鬼。 笑死叉趣,一個(gè)胖子當(dāng)著我的面吹牛泞边,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疗杉,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼阵谚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烟具?” 一聲冷哼從身側(cè)響起梢什,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朝聋,沒想到半個(gè)月后嗡午,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冀痕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年荔睹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片言蛇。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡僻他,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猜极,到底是詐尸還是另有隱情中姜,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布跟伏,位于F島的核電站丢胚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏受扳。R本人自食惡果不足惜携龟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望勘高。 院中可真熱鬧峡蟋,春花似錦、人聲如沸华望。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赖舟。三九已至蓬戚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宾抓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔓肯,地道東北人周霉。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344