前言:
作为开发者,关注新技术是必要的;作为Android开发者关注Google发布的更新是必须的!
今天我们来了解下前段时间已经发布的Android 7的一些新的特性,当然既然已经发布,那么也就是说我们应该尽快让我们的应用支持Android 7的新特性,让我们来看看Android 7有哪些值得关注的点吧!
Google发现,在多任务列表里,99%的人只会关注最近七个,所以Android N会自动移除更老的任务,同时增加了一个清除所有按钮(内存释放控可以满足了),而双击最近按钮会自动将最后一个使用的应用调到前台。
同时,分屏多任务、拖拽也加入进来。
通知同样得到了大幅改进,可以直接回复消息,长按通知可将其静音或者拦截。
我们就列举一下几个比较关注的点来讲解:
1、分屏多任务
其实国内已经有很多手机上面实现了分屏显示,但是这次google把分屏给标准化了:
Android 7.0预览版中增加了分屏多任务,这一功能同时适用于手机和平板电脑设备。另外谷歌也增加了“画中画”功能,与iOS 9类似。谷歌重新优化了这个功能,而它可以同时在平板和手机上使用,至于在屏幕的显示比例上,用户可以自行调整,另外谷歌还加入了全新的“画中画”模式,其允许用户将一个窗口缩放在角落,以方便同时浏览其它的应用界面,这跟iOS 9上的展现方式基本一致。
让我们自己的应用支持分屏多任务模式,只要设置一个参数就行了,不过这个得在7.0的sdk下,不然会报错的:
//在清单文件的Application或者Activity添加
android:resizeableActivity="true"
不想分享屏幕就讲参数设置为:false即可
多窗口的其他配置:
<activity android:name=".MainActivity">
<layout
android:defaultHeight="500dp"
android:defaultWidth="500dp"
android:gravity="bottom|end"
android:minimalHeight="200dp"
android:minimalWidth="200dp"/>
</activity>
这个layout标签的属性意义:
1.android:defaultHeight 配置多窗口模式下默认的高度。
2.android:defaultWidth 配置多窗口模式下默认的宽度。
3.android:gravity 配置activityde 初始位置
4.android:minimalHeight 最小高度
5.android:minimalWidth 最小宽度
看看多窗口模式下生命周期:
其他的方法都比较熟悉的,onMultiWindowModeChanged是多窗口新增的,当进入和退出多窗口模式会调用;isInMultiWindowMode()可以判断当前是否处于多窗口模式下,进入多窗口模式调用顺序是这样的:
D/MainActivity: onMultiWindowModeChanged:true
D/MainActivity: isInMultiWindowMode:true
D/MainActivity: onPause
D/MainActivity: onSaveInstanceState
D/MainActivity: onStop
D/MainActivity: onDestory
D/MainActivity: onCreate
D/MainActivity: onStart
D/MainActivity: onRestoreInstanceState
D/MainActivity: onResume
D/MainActivity: onPause
在调用前面两个方法后,我们的Activity会销毁然后重新创建,所以有需要保存数据的一些操作,务必要做处理。
退出多窗口模式:
D/MainActivity: onSaveInstanceState
D/MainActivity: onStop
D/MainActivity: onDestory
D/MainActivity: onCreate
D/MainActivity: onStart
D/MainActivity: onRestoreInstanceState
D/MainActivity: onResume
D/MainActivity: onPause
D/MainActivity: onMultiWindowModeChanged:false
D/MainActivity: isInMultiWindowMode:false
D/MainActivity: onResume
在我们视频暂停和播放的时候这种操作,放到onStart和onPause中,因为:
2、新设计的通知控制栏
3、Data Saver功能节省流量
其主要用于数据保护,特别是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;
}
});
吧获取到的内容设置到控件上即可!