cp : https://blog.csdn.net/yi_master/article/details/80067198html
1:JAVA8特性支持
1)Base64.java
在升級到as3.0以後,咱們即可以使用Base64.java這個類了,這個類的在java.util.Base64包下;而android裏面也有一個Base64.java,那麼他們加解密的內容是否一致?
先看下工程配置
代碼以下java
private void showUserJava8Feature(){
//java base64和android base64
// 使用基本編碼
String javaBase64encodedString = null; String androidBase64encodedString = null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { try { javaBase64encodedString = Base64.getEncoder().encodeToString("runoob?java8".getBytes("utf-8")); androidBase64encodedString = android.util.Base64.encodeToString("runoob?java8".getBytes("utf-8"),android.util.Base64.DEFAULT); Log.d("hwj","**showUserJava8Feature**" + javaBase64encodedString + "**" + androidBase64encodedString); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
輸出以下
可見java8中的Base64和Android的Base64加解密內容是一致的android
2)新日期和時間API
在舊版的 Java 中,日期時間 API是非線程安全的,同時沒法處理時區問題,所以java8中引入了以下兩種API:
Local(本地) − 簡化了日期時間的處理,沒有時區的問題。
Zoned(時區) − 經過制定的時區處理日期時間。c++
private void showUserJava8Feature(){
//測試時區
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { ZoneId id = null; // 獲取當前時間日期 ZonedDateTime date1 = ZonedDateTime.parse("2018-04-24T10:15:30+05:30[Asia/Shanghai]"); Log.d("hwj","**showUserJava8Feature date1**" + date1); id = ZoneId.of("Europe/Paris"); Log.d("hwj","**showUserJava8Feature ZoneId: **" + id); ZoneId currentZone = ZoneId.systemDefault(); Log.d("hwj","**showUserJava8Feature 當期時區:**" + currentZone); } }
輸入以下
express
3)Lambda 表達式
這個感受和js的閉包很相似,即容許把函數做爲一個方法的參數,語法以下瀏覽器
(parameters) -> expression
或
(parameters) ->{ statements; }安全
private void showUserJava8Feature(){ //測試lambda //聲明生命一個變量addition,其爲lambda表達式,這個表達式有兩個參數,用括號括起來,分別爲a和 //其執行的表示式爲a+b,並返回 //能夠看出lambda即像c++的指針操做,也像java的內聯函數的使用 MathOperation addition = (int a, int b) -> a + b; //當執行operate方法的時候,採用內聯函數的方式執行表達式a + b; Log.d("hwj","**showUserJava8Feature addition: 10 + 5 = **" + operate(10, 5, addition)); } interface MathOperation { int operation(int a, int b); } private int operate(int a, int b, MathOperation mathOperation){ return mathOperation.operation(a, b); }
輸入以下
閉包
4)java8還有不少新特性,這裏就不一一列舉
java8特性查看app
2:APK調試
咱們以前查看apk,須要使用反編譯工具去查看,還挺麻煩的,此次as升級以後,咱們即可以直接查看apk的內容了編輯器
要開始調試 APK,請在 Android Studio Welcome 歡迎屏幕中點擊 Profile or debug APK。 或者,若是您已經打開一個項目,請在菜單欄中點擊 File > Profile or debug APK。 在下一個對話框窗口中,選擇您想要導入 Android Studio 的 APK,而後點擊 OK。 您應當看到相似於以下畫面。
Project 窗格中的 Android 視圖容許您檢查 APK 的如下內容:
-> APK file:雙擊 APK 能夠打開 APK 分析器。
-> manifests:從 APK 中提取的應用 manifest。
-> java:包含 Android Studio 從您 APK 的 DEX 文件中反彙編(到 .smali 文件中)的 Java 代碼。 此目錄下的每個 .smali 文件都對應一個 Java 類。
-> cpp:若是您的應用包括原生代碼,此目錄將包含您的 APK 的原生庫(.so 文件)。
External Libraries:包含 Android SDK。
綜述:apk調試功能查看的內容並很少,咱們也不太可能依靠這個apk調試功能去調試代碼,本身的apk確定有源碼,別人的apk確沒有源碼,顧更多的調試仍是依賴debug手段,這個功能聊勝於無啊
3: 文件管理
點擊 View > Tool Windows > Device File Explorer 或工具窗口欄中的 Device File Explorer 按鈕以打開設備文件瀏覽器。
從下拉列表中選擇設備。
在文件瀏覽器窗口中與設備內容交互 右鍵點擊文件或目錄以建立新文件或目錄,將選定文件或目錄保存到您的機器中,上傳、刪除或同步。 雙擊文件,將其在 Android Studio 中打開。
注:Android Studio 會將您經過這種方式打開的文件保存到項目外部的臨時目錄中。 若是您對使用設備文件瀏覽器打開的文件進行修改,而且想要將更改保存回設備,您必須將修改版本的文件手動上傳到設備上。
瀏覽設備的文件時,如下目錄特別有用:
data/data/app_name/
包含您的應用存儲在內部存儲空間中的數據文件
sdcard/
包含存儲在外部用戶存儲空間中的用戶文件(例如圖片等)
4:佈局編輯器
Android Studio 3.X系列提供了更加便捷的UI編輯效果,在使用上感受和C#的UI控件更加切合,以下圖所示
1)左側的Component tree能夠更好的查看佈局文件的層次結構
2)紅色標記方框裏面的Force Refresh Layout能夠當即刷新UI,使得你的修改所見所得
3)右側是屬性欄,能夠方便讓你對控件進行控件操做
5:自適應圖標嚮導
即容許您啓動器圖標資源,在不一樣的設備上顯示,操做步驟以下圖
1)在res目錄中,右擊文件夾,打開image asset
2)
;從這副圖中,咱們能夠設置圖標的Foreground和Background,能夠再衆多apacha license的圖標中選擇一個圖標來適配;甚至能夠對啓動圖標進行客製化;還蠻有趣的
細心的朋友能夠發現,在android studio 3.X系列的drawable目錄下配置啓動圖片的資源文件爲ic_launcher_background.xml,代碼以下
<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" android:width="108dp" android:height="108dp" android:viewportHeight="108" android:viewportWidth="108"> <path android:fillType="evenOdd" android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" android:strokeColor="#00000000" android:strokeWidth="1"> <aapt:attr name="android:fillColor"> <gradient android:endX="78.5885" android:endY="90.9159" android:startX="48.7653" android:startY="61.0927" android:type="linear"> <item android:color="#44000000" android:offset="0.0" /> <item android:color="#00000000" android:offset="1.0" /> </gradient> </aapt:attr> </path> <path android:fillColor="#FFFFFF" android:fillType="nonZero" android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" android:strokeColor="#00000000" android:strokeWidth="1" /> </vector>
是否是頗有趣,他使用了最新的vector的方式來實現一個帶有特效的啓動圖標
6: Android Things
一個開發物聯網的模組
7:佈局檢查員改進
這個功能對於咱們來講,還蠻經常使用的,咱們能夠利用這個工具檢查一些咱們在編寫xml的時候佈局問題
--------------------- 本文來自 yi_master 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/yi_master/article/details/80067198?utm_source=copy