Android N 多窗口支持
来源:互联网 发布:怎么用淘宝客卖东西 编辑:程序博客网 时间:2024/05/16 17:44
MultiWindow
项目地址:venshine/MultiWindow
简介:Android N 多窗口支持
大纲
- 开发文档
- 多窗口模式
- 分屏模式
- 自由形状模式
- 功能简介
- 禁用多窗口模式
- 多窗口变更通知和查询
- 在多窗口模式中启动新 Activity
- 为多窗口模式准备的布局属性
- 支持拖放
- 参考
开发文档
https://github.com/venshine/MultiWindow/wiki
多窗口模式
多窗口模式有两种,分屏模式和自由形状模式。
分屏模式
长按 Overview 按钮进入到分屏模式。
自由形状模式
开启自由形状模式步骤如下:
- 打开模拟器或者用 usb 线连接已 root 的设备(前提是要 root)
- 命令行(终端)中输入 adb shell
- 然后输入 su 命令,获取 root 权限授权(此步要在手机上允许授权)
- 输入命令代码 settings put global enable_freeform_support 1
- 进入设置-开发者选项,然后滑动到界面最底部,打开强制将活动设为可调整大小按钮
- 重启模拟器或设备
功能简介
禁用多窗口模式
该属性为 true 时将支持多窗口模式,为 false 时不支持,以全屏模式展示。(该属性默认值为 true)
android:resizeableActivity=["true" | "false"]
多窗口变更通知和查询
Activity.isInMultiWindowMode() // 调用该方法以确认 Activity 是否处于多窗口模式 Activity.onMultiWindowModeChanged() // Activity 进入或退出多窗口模式时系统将调用此方法
在多窗口模式中启动新 Activity
当满足下面的条件,系统会让这两个 Activity 进入分屏模式:
- 当前 Activity 已经进入到分屏模式。
- 新打开的 Activity 支持分屏浏览(即 android:resizeableActivity=true)。
Intent intent = new Intent(this, SecondActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
为多窗口模式准备的布局属性
android:defaultWidth // 以自由形状模式启动时 Activity 的默认宽度 android:defaultHeight // 以自由形状模式启动时 Activity 的默认高度 android:gravity // 以自由形状模式启动时 Activity 的初始位置 android:minHeight、android:minWidth // 分屏和自由形状模式中 Activity 的最小高度和最小宽度。 如果用户在分屏模式中移动分界线,使 Activity 尺寸低于指定的最小值,系统会将 Activity 裁剪为用户请求的尺寸
支持拖放
发起拖放事件(FirstActivity)
mImageView.setTag("Drag an ImageView from First Activity"); mImageView.setOnLongClickListener(new View.OnLongClickListener() { public boolean onLongClick(View view) { Uri uri = getUri(mActivity, R.mipmap.ic_launcher); ClipData dragData = ClipData.newPlainText("", (CharSequence) view.getTag()); ClipData.Item imageItem = new ClipData.Item(uri); dragData.addItem(imageItem); View.DragShadowBuilder shadow = new View.DragShadowBuilder(view); view.startDragAndDrop(dragData, shadow, view, View.DRAG_FLAG_GLOBAL); return true; } });
接收拖放结果(SecondActivity)
mDrawTextView.setOnDragListener(new View.OnDragListener() { @Override public boolean onDrag(View view, DragEvent dragEvent) { switch (dragEvent.getAction()) { case DragEvent.ACTION_DRAG_STARTED: break; case DragEvent.ACTION_DRAG_ENTERED: break; case DragEvent.ACTION_DRAG_EXITED: break; case DragEvent.ACTION_DRAG_LOCATION: break; case DragEvent.ACTION_DRAG_ENDED: break; case DragEvent.ACTION_DROP: mDrawTextView.setVisibility(View.GONE); mDrawImageView.setVisibility(View.VISIBLE); ClipData clipData = dragEvent.getClipData(); mDrawImageView.setImageURI(clipData.getItemAt(1).getUri()); Toast.makeText(mActivity, clipData.getItemAt(0).getText(), Toast.LENGTH_LONG).show(); break; default: break; } return true; } });
参考
- 开发文档
- 官方 Sample
0 0
- Android N 多窗口支持
- Android N 多窗口支持
- android N - 多窗口支持
- Android N多窗口支持
- Android n multi-window多窗口支持
- Android N新特性--多窗口支持
- Android N多窗口支持介绍
- Android多窗口支持
- Android N 分屏(多窗口支持)+ConstraintLayout简单使用
- Android N 多窗口模式
- Android 7.0 多窗口支持
- android 7.0 多窗口支持
- Android N 多窗口模式应用开发
- Android N 多窗口的设计
- android 7新特性:多窗口支持
- Android 分屏模式-多窗口支持
- Nougat多窗口支持
- 多窗口支持
- android组件阴影效果
- 106-vs插件resharper的下载安装和破解
- Azure Blob Storage 基本用法 -- Azure Storage 之 Blob
- python 定时退出 1分钟后报警又开启
- linux图形系统框架
- Android N 多窗口支持
- Android 完全退出 App,Activity管理者 (Exit)
- 模拟面试题
- [rnn]BPTT_梯度消失/爆炸问题
- git 查看生成对象
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- FOF管理系列之二:FOF好在哪儿?
- 呼叫中心能为企业带来多少益处
- 仿 Cuto 壁纸应用的加载动画