学习Android官方文档(五)

一、权限()相关

1、变化

Android 5.1- 或者target SDK 为 22-:如果您在清单中列出了危险权限,则用户必须在安装应用时授予此权限

Android 6.0+ 或者target SDK 为 23+:应用必须在清单中列出权限,并且它必须在运行时请求其需要的每项危险权限。用户可以授予或拒绝每项权限,且即使用户拒绝权限请求,应用仍可以继续运行有限的功能。

2、危险权限中分为很多组,如果同意了相关权限组,则改组所有权限都允许。

3、权限检查

ContextCompat.checkSelfPermission(context , Manifest.permission.XXX)

4、权限申请

ActivityCompat.requestPermission(activity , String[] permissions , int requestCode)

requestCode 作为一个请求标示,在处理权限申请时用于区别

5、处理权限申请结果

重写 Activity.onRequestPermissionResult(requestCode , permissions , int[] grantResults)

注:

(1)检查和处理返回的结果都是两种:PackageManager.PERMISSION_GRANTED 和 PackageManager.PERMISSION_DENIED

(2)未在 Manifest 中声明的权限是不能动态申请的,只有危险权限才会在运行时申请

二、ActionBar

1、使用ActionBar

之前使用 ActionBar 需要继承 ActionBarActivity,现在为兼容老版本而且体验和功能更好,使用 AppCompatActivity,将 theme 设置成有 ActionBar 即可。在 Activity 中使用 getSupportActionBar() 即可操作状态栏。

若要自己定制 ActionBar,使用 ToolBar。

(1)继承 AppCompatActivity,将 theme 改为 NoActionBar。

(2)在布局文件中添加 ToolBar

学习Android官方文档(五)_第1张图片

(3)在 Activity 的 onCreate() 方法中,调用 Activity 的 setSupportActionBar() 方法,然后传递 Activity 的工具栏。该方法会将工具栏设置为 Activity 的应用栏。

注:若要获取该 ActionBar,在 Activity 中使用 getSupportActionBar() 即可。

2、Action Button的使用

(1)添加Action Button

首先创建XML文件,ActionBar 上的布局是在 res/menu 目录下,添加 标签。

学习Android官方文档(五)_第2张图片

然后在 Activity 中加载

学习Android官方文档(五)_第3张图片

注意:showAsAction 值说明(这些值可以组合使用):

1)ifRoom:会显示在ActionBar中,如果太多 Item 时会隐藏在溢出列表中;

2)always:无论是否溢出,总会显示;

3)withText:尽可能的显示这个标题,如果图标有效且空间有限,标题有可能显示不全;

4)never:总是显示在溢出列表中;

5)collaspseActionView:如果在 ActionBar 上则显示图标,在溢出列表中显示文字。与 ifRoom 配合使用,它随着 ActionBar 变化而变化。

(2)事件处理

重写 Activity.onOptionsItemSelected(MenuItem item) 方法,根据 MenuItem 的 ID 进行不同事件处理。

3、Action View 使用

(1)Action View 有很多功能。例如,一个搜索动作视图可以让用户在应用栏上输入搜索文字,而不用改变 Activity 或者 Fragment 界面(意思是不用在一个新的界面上进行搜索动作)。

(2)创建 Action View

在 menu 文件中添加 item,必须添加 actionViewClass 或者 actionLayout 属性(若使用v7包中的类,命名空间是app,不是android)。

(3)在 Activity 中加载 menu,然后通过 menu.findItem(int id) 拿到 MenuItem,可以对 Action View 做更多操作。

4、Action Provider 的使用

(1)创建 Action Provider

在 menu 文件中添加 item,必须添加 actionProviderClass 属性(若使用v7包中的类,命名空间是app,不是android)。

(2)以 ShareActionProvider 为例

学习Android官方文档(五)_第4张图片

注意:

(1)v7包的 ActionProvider 需要通过 MenuItemCompat.getActionProvider(menuItem) 方式获得,早期版本通过 menuItem.getActionProvider() 。

(2)要为 ShareActionProvider 设置分享的 Intent 。

5、返回按钮--Up Button

官方提供了一种在 Action Bar 上添加返回上一级按钮的方法。

API 16+:Manifest 的 activity 标签添加 parentActivityName 属性,指定返回哪个 Activity;

API 15-:

然后在 Activity 中设置

学习Android官方文档(五)_第5张图片

你可能感兴趣的:(学习Android官方文档(五))