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 Activity 和 Apply Code Changes (其實Run也是apply changes的一部分)。
Apply Changes and Restart Activity,顧名思義,就是應用修改並重啓Activity。當你修改了代碼,又修改了資源文件的時候可以應用這種方式直接重啓activity而不需要重啓app
Apply Code Changes,就是當你只修改了代碼,並沒有修改資源文件的時候,應用它連activity也不需要重啓就能看到修改的效果。
但是要注意,以下情況是不能應用以上兩種方式查看效果的,只能用平常用的run纔有效。
- 增加或刪除了一個方法或一個字段
- 改變了方法的簽名,如改了方法名,參數名字或個數
- 更改方法或類的修飾符
- 更改類繼承
- 更改枚舉中的值
- 添加或刪除資源
- 更改應用清單
- 更改SO文件
由於水平有限,如果文中存在錯誤之處,請大家批評指正,歡迎大家一起來分享、探討!
博客:http://blog.csdn.net/MingHuang2017
GitHub:https://github.com/MingHuang1024
Email: [email protected]
Hub:https://github.com/MingHuang1024
Email: [email protected]
微信:724360018