cp : https://blog.csdn.net/yi_master/article/details/80067198

1:JAVA8特性支持
1)Base64.java
在升级到as3.0之后,我们便可以使用Base64.java这个类了,这个类的在java.util.Base64包下;而android里面也有一个Base64.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加解密内容是一致的

2)新日期和时间API
在旧版的 Java 中,日期时间 API是非线程安全的,同时无法处理时区问题,因此java8中引入了如下两种API:
Local(本地) − 简化了日期时间的处理,没有时区的问题。
Zoned(时区) − 通过制定的时区处理日期时间。

    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);
}
}

输入如下

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特性查看


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

[Android Pro] Android P版本 新功能介绍和兼容性处理(三)Android Studio 3.0 ~ 3.2 其他特性的更多相关文章

  1. [Android P] Android P版本 新功能介绍和兼容性处理(一)

    cp from :https://blog.csdn.net/yi_master/article/details/80046696 Android P版本已经到来,首篇我们当然要先看下Android ...

  2. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  3. Kafka 0.11版本新功能介绍 —— 空消费组延时rebalance

    在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer instance启动的时间不可控,很有可能超出coordinator确定 ...

  4. Apache Flink 1.9.0版本新功能介绍

    摘要:Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能.目前,Apache Flink 1.9 ...

  5. hasura graphql-engine v1.0.0-alpha30 版本新功能介绍

    hasura graphql-engine v1.0.0-alpha30 发布了,以下为一些变动的简单说明 破坏性的变动 order_by 中的desc 从 desc nulls last 修改为 d ...

  6. Kafka 0.11新功能介绍:空消费组延迟rebalance

    Kafka 0.11新功能介绍:空消费组延迟rebalance 在0.11之前的版本中,多个consumer实例加入到一个空消费组将导致多次的rebalance,这是由于每个consumer inst ...

  7. Android Studio 3.0 下载 使用新功能介绍

    谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.g ...

  8. 【Linux】Ubuntu18.04镜像下载,新功能介绍

    一.Ubuntu18.04镜像下载 官方下载地址:http://releases.ubuntu.com/18.04/ 官方64位iso下载地址:http://releases.ubuntu.com/1 ...

  9. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析   新版本就不再吐槽了,整的自己跟个愤青似的.人老了,喷不动了,把机会留给年轻人吧.下午随着新版本开放,微信居然破天荒的开放了开发者论坛.我很是担心官方 ...

随机推荐

  1. IntelliJ IDEA配置Tomcat 与安装Tomcat失败原因

    1.jdk中jre损坏,无法提供运行环境:重新下载jre安装并配置

  2. typeof引发的思考

    今天在群里看到一位网友提问:var status=1; typeof status 结果输出什么 我会心一笑  ,这尼玛这么简单,一看就是‘number’,结果网友说不是number,而是string ...

  3. linux + docker + selenium grid 实现分布式执行selenium脚本

    Selenium Grid 有两个概念 hub :主节点,你可以看作 "北京总公司的测试经理". node:分支节点,你可以看作 "北京总公司的测试小兵A" 和 ...

  4. ef 数据库连接字符串加密

    public testContext() : base(GetConnection(), true) { } public static DbConnection GetConnection() { ...

  5. POJ 3050 Hopscotch【DFS带回溯】

    POJ 3050 题意: 1.5*5的方阵中,随意挑一格,记住这个格子的数字 2.可以上下左右走,走5次,每走一次记录下所走格子的数字 3.经过以上步骤,把所得6个数字连起来,形成一串数字.求共可以形 ...

  6. vtiger自定上传图片的字段

    废话不多说,上一篇有说到过vtiger新建模块的事 现在我新建了一个Score的模块,里面需要一个上传图片的功能 在Score界面新建一个字段叫grede 但是自定义类型里面是没有,图片这个选项的,只 ...

  7. asp.net core 2.0 cookie的使用

    本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过. cookie的使用方法和之前的相比也有所变化.之前是通过cookie的add.set.clear. ...

  8. Redis简单了解

    Redis介绍 Redis(REmote DIctionary Server)是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库, ...

  9. jquery数组(sort() 排序)

    HTML: <h3>字符串数组排序前</h3> <div id="show5"></div> <h3>排序后</h ...

  10. 既有e^x又有sinx或cosx的积分题的解法

    楼上三位,一致对e^x情有独钟,他们都是对的.通常,这类题既有e^x又有sinx或cosx的积分题,一般的解法是:1.选定e^x,或选定sinx.cosx,就得“从一而终”,用分部积分的方法计算,   ...