前言:

作为开发者,关注新技术是必要的;作为Android开发者关注Google发布的更新是必须的!
今天我们来了解下前段时间已经发布的Android 7的一些新的特性,当然既然已经发布,那么也就是说我们应该尽快让我们的应用支持Android 7的新特性,让我们来看看Android 7有哪些值得关注的点吧!

Google发现,在多任务列表里,99%的人只会关注最近七个,所以Android N会自动移除更老的任务,同时增加了一个清除所有按钮(内存释放控可以满足了),而双击最近按钮会自动将最后一个使用的应用调到前台。
同时,分屏多任务、拖拽也加入进来。
通知同样得到了大幅改进,可以直接回复消息,长按通知可将其静音或者拦截。

我们就列举一下几个比较关注的点来讲解:

1、分屏多任务
其实国内已经有很多手机上面实现了分屏显示,但是这次google把分屏给标准化了:

Android 7.0预览版中增加了分屏多任务,这一功能同时适用于手机和平板电脑设备。另外谷歌也增加了“画中画”功能,与iOS 9类似。谷歌重新优化了这个功能,而它可以同时在平板和手机上使用,至于在屏幕的显示比例上,用户可以自行调整,另外谷歌还加入了全新的“画中画”模式,其允许用户将一个窗口缩放在角落,以方便同时浏览其它的应用界面,这跟iOS 9上的展现方式基本一致。

Android 7 强势来袭开发者们不得不知道的细节_第1张图片
让我们自己的应用支持分屏多任务模式,只要设置一个参数就行了,不过这个得在7.0的sdk下,不然会报错的:

//在清单文件的Application或者Activity添加android:resizeableActivity="true"
不想分享屏幕就讲参数设置为:false即可
多窗口的其他配置:
   
这个layout标签的属性意义:
1.android:defaultHeight 配置多窗口模式下默认的高度。
2.android:defaultWidth 配置多窗口模式下默认的宽度。
3.android:gravity 配置activityde 初始位置
4.android:minimalHeight 最小高度
5.android:minimalWidth 最小宽度

看看多窗口模式下生命周期:

Android 7 强势来袭开发者们不得不知道的细节_第2张图片

其他的方法都比较熟悉的,onMultiWindowModeChanged是多窗口新增的,当进入和退出多窗口模式会调用;isInMultiWindowMode()可以判断当前是否处于多窗口模式下,进入多窗口模式调用顺序是这样的:

D/MainActivity: onMultiWindowModeChanged:trueD/MainActivity: isInMultiWindowMode:trueD/MainActivity: onPauseD/MainActivity: onSaveInstanceStateD/MainActivity: onStopD/MainActivity: onDestoryD/MainActivity: onCreateD/MainActivity: onStartD/MainActivity: onRestoreInstanceStateD/MainActivity: onResumeD/MainActivity: onPause
在调用前面两个方法后,我们的Activity会销毁然后重新创建,所以有需要保存数据的一些操作,务必要做处理。
退出多窗口模式:
D/MainActivity: onSaveInstanceStateD/MainActivity: onStopD/MainActivity: onDestoryD/MainActivity: onCreateD/MainActivity: onStartD/MainActivity: onRestoreInstanceStateD/MainActivity: onResumeD/MainActivity: onPauseD/MainActivity: onMultiWindowModeChanged:falseD/MainActivity: isInMultiWindowMode:falseD/MainActivity: onResume
在我们视频暂停和播放的时候这种操作,放到onStart和onPause中,因为:


2、新设计的通知控制栏
Android 7 强势来袭开发者们不得不知道的细节_第3张图片


3、Data Saver功能节省流量
Android 7 强势来袭开发者们不得不知道的细节_第4张图片
其主要用于数据保护,特别是App在后台偷跑流量的情况。


4、跨Activity拖拽

在Android 4.0已经支持Activity中内容拖拽,如今支持的是跨actvity内容(对View的跨Activity拖拽是不支持的仅限于内容)拖拽:
假如我们在MainActivity有一个TextView,上面的内容是Android 7,将Android 7这段文字拖拽到T2Activity中的Button上:
MainAcitivyt:

TextView tv = (TextView)findViewById(R.id.textveiw);tv.setOnLongClickListener(new View.OnLongClickListener(){        @Override         public boolean onLongClick(View view){                ClipData data = ClipData.newPlainText(view.getClass().getName(),((Button)view).getText());                View.DragShadowBuilder builder = new View.DragshadowBuilder(view);                view.startDragAndDrop(data,builder,view,View.DRAG_FLAG_GLOBAL);                return true;         }});
设置长按监听,View.DRAG_FLAGE_GLOBAL:可以跨Activ ity拖拽。

T2Activity:

final Button button = (Button)findViewById(R.id.button);findViewById(R.id.container).setOnDragListener(new View.OnDragListener(){   @Override   public boolean onDrag(View view,DragEvent dragEvent){  switch(DragEvent getAction()){  case DragEvent.ACTION_DRAG_STARTED:  prntLog("darg satrted");      break;  case DragEnent.ACTION_DARG_ENTERED:  prntLog("drag entered");      break;  case DragEnent ACTION_DROP:  ClipData.Item item = dragEvent.getClipData().getItemAt(0);  content.setText(item.getText());  break;  case DragEnent.ACTION_DRAG_ENDED;  prnLog("drag enered");      break;  }  return true;   }});

吧获取到的内容设置到控件上即可!


更多相关文章

  1. Android 开发者从0到1发布一个微信小程序的采坑过程——使用帮助
  2. 作为一个IOS\android开发者,转行到RN的理由,包括学习路线
  3. Android中Activity启动模式launchermode和intent.addFlags
  4. Android: 打印Bundle内容
  5. Android 组件 ContentProvider 内容提供者
  6. [转]Android Recovery模式
  7. 待验证内容。

随机推荐

  1. android 列出所有播放器
  2. android 编译库过程
  3. WebView 无法执行js代码
  4. 如何取得android手机网络信息
  5. Checkbox(打勾显示输入的密码)
  6. Gallery組件學習总结及OutOfMemoryError:
  7. 修改软键盘的回车键为发送键
  8. android ImageView实现图片浏览器(点击左
  9. android heapStartSize heapMaximumSize
  10. android fastboot flash system 失败