Android实现简单画中画功能
Android 8.0推出了PictureInPicture(画中画功能),目前只有在8.0以上的系统上支持。对比IOS,IOS的Picture in Picture 模式是苹果公司在 iOS 9 中加入的一项多任务功能。下面先看一下效果:
相信不少人在平时使用ios手机的app时,已经体验过了,很高兴谷歌也推出了这项功能。
使用画中画模式注意点:
1.要使用画中画模式的Activity需要在清单文件中添加属性:
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"android:supportsPictureInPicture="true"
2.需要使用PictureInPictureParams类:
PictureInPictureParams.Builder mPictureInPictureParamsBuilder =new PictureInPictureParams.Builder();
3.添加待决定的意图
ArrayListactions = new ArrayList<>(); final PendingIntent intent =PendingIntent.getBroadcast(MainActivity.this,requestCode,new Intent(ACTION_MEDIA_CONTROL).putExtra(EXTRA_CONTROL_TYPE, controlType),0); actions.add(new RemoteAction(icon, title, title, intent)); mPictureInPictureParamsBuilder.setActions(actions);
4.使用广播接收各种意图
private BroadcastReceiver mReceiver; mReceiver =new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (intent == null|| !ACTION_MEDIA_CONTROL.equals(intent.getAction())) {return; }// This is where we are called back from Picture-in-Picture action items.//这就是我们从画中画模式的操作回调的地方final int controlType = intent.getIntExtra(EXTRA_CONTROL_TYPE, 0); switch (controlType) {case CONTROL_TYPE_PLAY:mMovieView.play(); break; case CONTROL_TYPE_PAUSE:mMovieView.pause(); break; }}}; registerReceiver(mReceiver, new IntentFilter(ACTION_MEDIA_CONTROL));
【Android实现简单画中画功能】5.配合自定义的MediaPlayer使用:
private MovieView mMovieView; //各种操作mMovieView.showControls(); mMovieView.pause(); mMovieView.play(); mMovieView.hideControls(); mMovieView.setAdjustViewBounds(false);
通过广播接收者接收各种操作意图,对应其操作
Demo地址:点击查看
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- android第三方框架(五)ButterKnife
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 科学养胃,别被忽悠,其实真的很简单
- 带有Hilt的Android上的依赖注入
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入