android studio 3.6 新特性

android studio 3.6 新特性

android studio 3.6 穩定版已經在2月份就發佈了,一直也沒去看看,這兩天決定看一下,老是提示我更新。新特性還是很多的,這裏把自己感興趣的幾點記下來。完整的請看官方文檔:https://developer.android.com/studio/releases

0、gradle 離線模式設置

當我一打開studio 3.6的時候,首先就是想要打開離線模式。

要打開gradle的離線模式,點菜單View > Tool Windows > Gradle ,然後
在這裏插入圖片描述
[

一、佈局編輯器窗口可拆分

可以將xml編輯窗口與設計窗口同時在編輯器中顯示,如下圖所示,如果使用的是大屏,這將會方便很多,比如在設計圖中選中一個元素,就會對xml中高亮對應的代碼,要在代碼中修改屬性的話定位非常快,而且能對照着看效果

在這裏插入圖片描述

二、View binding 視圖綁定

View binding 就是不用寫 findViewById了,啓用之後無論是java還是Kotlin都可以不用寫 findViewById了。當然,Kotlin本身也支持不用寫findViewById的,這一點對Kotlin來說吸引力並不大,唯一的優勢我想可能是不用擔心導入了錯的綁定類,比方說activity_main.xml和edit_menu_activity.xml都有一個id叫tvTitle的TextView,假定你的activity的contentView是activity_main.xml,頁導入的卻是edit_menu_activity.xml的綁定類(因爲眼花?手抖?),像這樣

import kotlinx.android.synthetic.main.edit_menu_activity.*

這時候給tvTitle賦值就會報錯說找不到view了。而用View binding 的話就可以避免這種情況的發生。其用法如下:

// 先在模塊(比如app)的 build.gradle中添加以下配置
android {
    viewBinding.enabled = true
}

接下來寫個佈局文件,名字叫 result_profile.xml

<LinearLayout ... >
    <TextView android:id="@+id/name" />
    <ImageView android:cropToPadding="true" />
    <Button android:id="@+id/button"
        android:background="@drawable/rounded_button" />
</LinearLayout>

然後在代碼中:

private lateinit var binding: ResultProfileBinding

override fun onCreate(savedInstanceState: Bundle) {
    super.onCreate(savedInstanceState)
    binding = ResultProfileBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}

接下來在xml中所有有id的元素都可以用binding來引用了

binding.name.text = viewModel.name
binding.button.setOnClickListener { viewModel.userClicked() }

view binding 與 data binding的比較:

優勢:

1、編譯速度更快,view binding不使用註釋,所以不需要進行註釋處理,編譯速度相對更快

2、更容易使用:view binding不需要特殊標記的XML佈局文件,佈局文件跟傳統的寫法一模一樣,不需要添加什麼額外的東西,用起來更順手。而且在模塊中啓用視圖綁定後,它將自動應用於該模塊的所有佈局。

如果你想單獨不綁定某個佈局文件的話也可以,在根元素添加以下屬性,如:

 <LinearLayout
        ...
        tools:viewBindingIgnore="true" >
    ...
</LinearLayout>

弱勢:

1、view binding無法進行數據綁定,不能在xml中動態地爲元素的屬性賦值,比如要顯示用戶名,只能在登錄後在代碼中根據用戶顯示。

2、不支持雙向綁定

所以要根據自己的實際需要選擇使用view binding 還是 data binding

三、 apply changes

apply changes 嚴格來講不是3.6的新特性,3.5開始就有了,不過之前沒怎麼關注它,我覺得是個挺有意思的東西,可惜我的測試機版本太低,平時都用不上這個功能。 apply changes是做什麼的呢?就是在開發中改了代碼或資源文件,不用重新編譯apk,不用安裝,不用重啓app,甚至在某些情況下連activity也不用重啓,就可以將修改的東西應用到已打開的app中,這樣就可以更快地看到修改的效果。相對於Run要快很多,是不是覺得很期待,馬上要去試一下?不過

apply changes 功能只能在android8.0(api26)以上的機器才能使用,並且要是debug版本的包

apply changes又分爲Apply Changes and Restart ActivityApply Code Changes (其實Run也是apply changes的一部分)。

Apply Changes and Restart Activity,顧名思義,就是應用修改並重啓Activity。當你修改了代碼,又修改了資源文件的時候可以應用這種方式直接重啓activity而不需要重啓app

Apply Code Changes,就是當你只修改了代碼,並沒有修改資源文件的時候,應用它連activity也不需要重啓就能看到修改的效果。

但是要注意,以下情況是不能應用以上兩種方式查看效果的,只能用平常用的run纔有效。

  1. 增加或刪除了一個方法或一個字段
  2. 改變了方法的簽名,如改了方法名,參數名字或個數
  3. 更改方法或類的修飾符
  4. 更改類繼承
  5. 更改枚舉中的值
  6. 添加或刪除資源
  7. 更改應用清單
  8. 更改SO文件




由於水平有限,如果文中存在錯誤之處,請大家批評指正,歡迎大家一起來分享、探討!

博客:http://blog.csdn.net/MingHuang2017

GitHub:https://github.com/MingHuang1024

Email: [email protected]

Hub:https://github.com/MingHuang1024

Email: [email protected]

微信:724360018

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章