Android 7 强势来袭开发者们不得不知道的细节

前言:

作为开发者,关注新技术是必要的;作为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;
   }
});

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值