软件编程
位置:首页>> 软件编程>> Android编程>> Android实现简单画中画功能

Android实现简单画中画功能

作者:ckwccc  发布时间:2022-07-18 04:51:25 

标签:Android,画中画

Android 8.0推出了PictureInPicture(画中画功能),目前只有在8.0以上的系统上支持。对比IOS,IOS的Picture in Picture 模式是苹果公司在 iOS 9 中加入的一项多任务功能。下面先看一下效果:

Android实现简单画中画功能

相信不少人在平时使用ios手机的app时,已经体验过了,很高兴谷歌也推出了这项功能。

使用画中画模式注意点:

1.要使用画中画模式的Activity需要在清单文件中添加属性:


android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:supportsPictureInPicture="true"

2.需要使用PictureInPictureParams类:


PictureInPictureParams.Builder mPictureInPictureParamsBuilder =
           new PictureInPictureParams.Builder();

3.添加待决定的意图


ArrayList<RemoteAction> actions = 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() {
                       @Override
                       public 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));

5.配合自定义的MediaPlayer使用:


private MovieView mMovieView;

//各种操作
mMovieView.showControls();
mMovieView.pause();
mMovieView.play();
mMovieView.hideControls();
mMovieView.setAdjustViewBounds(false);

通过广播接收者接收各种操作意图,对应其操作

Demo地址:点击查看

来源:https://blog.csdn.net/ckwccc/article/details/79098602

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com