Android 6.0新特性

Android 6.0新特性


用户体验:

5月29日零点,谷歌正式在旧金山举办了广大安卓机友们都很期待的I/O开发者大会,这是谷歌每年都会举办的一次盛会,而对安卓机友们来说就是一次期盼。此次在会上,谷歌为大家带来了众望所归的安卓6.0(Android M)操作系统。

新特性一:App Permissions(软件权限管理)

  在安卓6.0里,应用许可提示可以自定义了。它允许对应用的权限进行高度管理,比如应用能否使用位置、相机、麦克风、通讯录等,这些都可以开放给开发者和用户。

新特性二:Chrome Custom Tabs(网页体验提升)

  新版的M对于Chrome的网页浏览体验进行了提升,它对登陆网站、存储密码、自动补全资料、多线程浏览网页的安全性进行了一些列的优化。

新特性三:App Links(APP关联)

  安卓6.0加强了软件间的关联,谷歌在现场展示了 一个例子,比如你的手机邮箱里收到一封邮件,内文里有以个Twitter链接,用户点击该链接可以直接跳转到Twitter应用,而不再是网页。

新特性四:Android Pay(安卓支付)

  Android支付统一标准,新的安卓6.0系统中集成了Android Pay,其特性在于简洁、安全、可选性。Android Pay是一个开放性平台,使用户就可以选择谷歌的服务或者使用银行的APP来使用它,Android Pay支持4.4以后系统设备,在发布会上谷歌宣布Android Pay已经与美国三大运营商700多家商店达成合作。支付功能可以使用指纹来进行支付,这意味着今年基于安卓M的Nexus产品肯定会有指纹识别了。

新特性五:Fingerprint Support(指纹支持)

  安卓6.0增加了对指纹的识别API,谷歌开始在M里自建官方的指纹识别支持,力求Android统一方案,目前所有的Android产品指纹识别都是使用非谷歌认证的技术和接口。

新特性六:Power & Change(电量管理 )

  新的电源管理模块将更为智能,比如Android平板长时间不移动时,安卓6.0M系统将自动关闭一些App。同时安卓6.0设备将支持USB Type-C接口,新的电源管理将更好的支持Type-C接口。

  此次,安卓6.0(Android M)新系统主要改进的地方就是,改善用户体验,修复BUG,提升了这个开放平台的整体质量,很多内容都得到了改善,相信从这些新特性中大家也能看到。

 

新的知识点:

1. okHttp

   1.1 okHttp用于替代HttpUrlConnection和Apache HttpClient(6.0里已移除HttpClient)

   1.2 okHttp优势

    1.2.1 支持SPDY,共享同一个Socket来处理同一个服务器的所有请求

    1.2.2 如果SPDY不可用,则通过连接池来减少请求延迟

    1.2.3 无缝的支持GZIP来减少数据流量

    1.2.4 缓存响应数据来减少重复的网络请求

   1.3 导入依赖

    1.3.0 图形化操作

    file - project structrue - app - dependebcies - library dependencies - 搜索okhttp

    1.3.1 修改build.gradle 

    compile "com.squareup.okhttp:okhttp:2.5.0"

    1.3.2 下载jar文件

    自行百度

   1.3 发送get请求

    1.3.1 创建OkHttpClient对象

    1.3.2 使用Request.Builder构建请求对象

    // http://wthrcdn.etouch.cn/weather_mini?citykey=101010100

    Request request = new Request.Builder().url(url).build();

    1.3.3 发送请求

    Response res = okHttpClient.newCall(request).execute();

    1.3.4 获取服务器返回的数据

    String json = res.body().string();

   1.4 发送post请求

    1.4.1 声明post的数据类型

    MediaType JSON = MediaType.parse("application/json;charset=utf-8");

    1.4.2 构建JSON字符串

    String jsonStr = "{name=\"你好啊!\"}";

    1.4.3 创建RequestBody消息体对象

    RequestBody body = RequestBody.create(JSON,jsonStr);

    1.4.4 使用Request.Builder构建请求对象

    // http://192.168.0.102:8080/TestProject/JsonServlet

    Request request = new Request.Builder().url(url).post(body).build();

    1.4.5 创建OkHttpClient对象,并发送请求

    Response res = okHttpClient.newCall(request).execute();

    1.4.6 获取返回结果

    if(res.isSussessful()){

    String json = res.getBody();

    }

   1.5 发送post请求,并传递字段

    1.5.1 构建RequestBody消息体对象

    // http://192.168.0.102:8080/TestProject/ParamServlet

    RequestBody body = new FormEncodingBuilder()

    .add("platform","android")

    .add("version","23")

    .add("SDK","24")

    .build();

    1.5.2 构建Request对象、OkHttpClient对象,发送post请求,并获取返回值


2. TextInputLayout

   2.0 环境配置

    2.0.1 需要引用Support v7 和 Support Design 包(从MAVEN库引用,或最新的%SDK%\extra\design\libs下有jar包)

    2.0.2 创建xml的app属性(可以直接使用代码模板:appns)

    xmlns:app="http://schemas.android.com/apk/res-auto"

   2.1 展示效果:自带界面友好的错误提示

   2.2 使用TextInputLayout包裹一个EditText

   2.3 获取输入框

    textInputLayout.getEditText(); // 不需要findViewById

   2.4 显示错误提示

    textInputLayout.setErrorEnable(true);

    textInputLayout.setError(msg);

   2.5 隐藏错误提示

    textInputLayout.setErrorEnable(false);


3. TextSelection变更

   3.1 展示效果:对比5.0的文本选择,6.0系统文本选择显示的菜单项可以被修改。

   3.2 创建布局,添加TextView

   3.3 获取TextView对象,注册回调监听

    tv.setCustomSelectionActionModeCallBack()

   3.4 自定义类实现监听接口 ActionMode.CallBack2

   3.4 ActionMode.CallBack2的onCreateActionMode方法创建Meu对象

    3.4.1 创建MenuInflate对象

    MenuInflate menuInflate = actionMode.getMenuInflater();

    3.4.2 填充menu对象

    menuInflate.inflate(R.menu.main, menu);

    3.4.3 方法返回值设置为true,说明该方法已被拦截


4. FloatingActionButton(FAB)

   4.1 用于显示一个悬浮在界面上的按钮,可以设置点击事件(onClickListener)

   4.2 设置按钮大小

    app:fabSize="mini"

   4.3 设置按钮背景色

    app:backgroundTint="#fff";


5. SnackBar

   5.1 展示效果:用于显示提示,官方建议用于替代Toast

   5.2 对比Toast来使用

    Toast.makeText(context,msg,0).show();

    Snackbar.make(view,msg,0).show();

   5.3 参数里View的作用

    查看官方文档,该view用于查找ParentView,以确定SnackBar的显示位置

   5.4 设置点击事件

    snackBar.setAction("可点击的提示文字",onClickListener);


6. TabLayout

   6.1 展示效果:方便的实现tab跟随Viewpager切换,不需要第三方或者自定义

   6.3 在layout里使用tablayout

   6.4 向tablayout对象addTab

    tabLayout.addTab(tabLayout.newTab().setText(""))

   6.5 关联ViewPager

    方式一: viewpager.addOnPagerChangeListener(new TabLayoutOnPagerChangeListener(tabLayout))

    方式二:tabLayout.setupWithViewPager(viewPager)

   6.6 ViewPager使用的FragmentPagerAdapter

    需要在getPagerTitle方法返回一个字符串,该字符串会作为对应position的tab的标题。

   6.7 设置tab的点击事件

    tabLayout.setOnTabSelectedListener


7. NavigationView

   7.1 展示效果:用作侧滑菜单的侧边导航栏

   7.2 必须嵌套在DrawerLayout里使用

    DrawerLayout包含两个子布局,一个导航栏,另一个为显示的正文

   7.3 NavigationView的属性:

    7.3.1 app:headerLayout,可选项,可以指定一个布局作为导航内容的Header

    7.3.2 app:menu,必需项,指定一个menu,作为导航内容的菜单

   7.4 导航栏的点击响应

    7.4.1 navigationView.setNavigationItemSelectedListener

    该方法监听被点击的MenuItem,判断MenuItem对象处理对应的事件响应


8. CoordinatorLayout

   8.1 展示效果:可以协调多个布局间的位置关系。让FloatActionBar上下滑动,为Snackbar留出空间;拓展或折叠toolbar;控制view扩展或收缩,以及大小比例

   8.2 CoordinatorLayout作为根布局使用

   8.3 配合FloatActionBar和SnackBar使用

    8.3.1 布局里添加FAB,当界面上显示Snackbar的时候会自动的偏移FAB的位置


   8.4 配合AppBarLayout和toolbar使用

    8.4.1 用AppBarLayout包裹的子view会以一个整体的形式作为AppBar,从而具备统一的风格

    8.4.2 设置toolbar属性可以使toolbar随着界面滑动而隐藏/显示

    app:layout_scrollFlags="scroll|enterAlways"

    // scroll 表示该view可以被折叠

    // enterAlways 表示向上滑动则隐藏ToolBar,向下滑动则显示

    // exitUntilCollapsed 将关闭滚动直到它被折叠起来(有 minHeight) 并且一直保持这样

    // enterAlwaysCollapsed 定义了 View 是如何回到屏幕的,当你的 view 已经声明了一个minHeight, 并且你使用了这个标志,你的 View 只有在回到这个最小的高度的时候才会展开,只有当 view 已经到达顶部之后它才会重新展开全部高度。

    8.4.3 可滚动的控件需要设置属性

    app:layout_behavior="@string/appbar_scrolling_view_behavior"

    // 标识自己发起的滚动可以导致AppBar收缩

    8.4.3 带layout_scrollFlags的view需要放在布局的前面,这样收回的view才能够正常退出,而固定的view继续留在顶部


   8.5 配合AppBarLayout和CollapsingToolbarLayout使用

    8.5.1 AppBarLayout用于包裹且仅包裹CollapsingToolbarLayout,使得CollapsingToolbarLayout作为AppBar而存在

    8.5.2 CollapsingToolbarLayout用于包含Toolbar和ImageView, 提供滑动中的渐变和视差效果

    8.5.3 设置CollapsingToolbarLayout属性

    app:expandedtitleMarginStart="10dp"// 指定文字和左边缘的间距

    app:contextScrim="?attr/colorPrimary"//折叠后容器的颜色

    app:layout_scrollFlag="scroll|exitUntilCollapsed"

    // 拦截滚动的事件

    // enterAlwaysCollpsed  ---------- ????????

    // exitUntilCollapsed 可以让ToolBar固定在最顶部,而不伴随手势的滚动隐藏------- ??????????

    8.5.4 设置ImageView属性

    app:layout_collapseMode="parallax"

    // parallax模式:在内容滚动时,CollapsingToolbarLayout里的view可以同时滚动,造出视差效果

    8.5.4 设置Toolbar属性

    app:layout_collapseMode="pin"

    // pin模式:当CollapsingToolbarLayout完全收缩后,继续保留在屏幕上

    android:layout_height="?attr/actionbarSize" // 设置高度为actionbar的高度

    8.5.5 手势滑动时,修改toolbar文字大小,文字颜色

    8.5.5.1 获取到CollapsingToolbarLayout对象

    8.5.5.2 设置标题

    collapsingToolbarLayout.setTitle

    8.5.5.3 设置展开状态的颜色

    collapsingToolbarLayout.ExpandedTitleColor

    8.5.5.4 设置折叠状态的颜色

    collapsingToolbarLayout.setCollapsedTitleTextColor


附:Android6.0 Design新特性搜索关键字:高逼格UI


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值