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