Android 如何以图片模式在图片中创建自定义布局?

Android 如何以图片模式在图片中创建自定义布局?,android,android-picture-in-picture,Android,Android Picture In Picture,我需要在我的应用程序中实现画中画模式 在我的应用程序时钟页面中,当我选择时间时,计时器在图片模式视图中的图片中启动。剩下的课应该大屏幕吗 在图片视图中的图片中,如何创建自定义布局 注意:我在这个类中使用fragment(如何为fragment类编程设置这一行android:supportsPictureInPicture=“true”) 我已附上样本图像供您参考。请参考 我使用DragblePanel实现相同类型的效果 private void initializeDraggablePanel(

我需要在我的应用程序中实现画中画模式

  • 在我的应用程序时钟页面中,当我选择时间时,计时器在图片模式视图中的图片中启动。剩下的课应该大屏幕吗
  • 在图片视图中的图片中,如何创建自定义布局
  • 注意:我在这个类中使用fragment(如何为fragment类编程设置这一行
    android:supportsPictureInPicture=“true”

    我已附上样本图像供您参考。请参考


    我使用DragblePanel实现相同类型的效果

    private void initializeDraggablePanel(Fragment fragmentView, Fragment bottomFragment) {
            draggablePanel.removeAllViews();
            draggablePanel.setFragmentManager(getSupportFragmentManager());
            draggablePanel.setTopFragment((Fragment) fragmentView);
            draggablePanel.setBottomFragment(bottomFragment);
            draggablePanel.setVisibility(View.VISIBLE);
            draggablePanel.setClickToMaximizeEnabled(true);
            draggablePanel.setDraggableListener(new DraggableListener() {
                @Override
                public void onClosedToLeft() {
                    draggablePanel.removeAllViews();
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onMinimized() {
                    isFullScFromMini = true;
                    pipHandler.removeCallbacks(runnapipa);
                    pipHandler.postDelayed(runnapipa, PIP_DELAY);
                    draggablePanel.disableBottomView(true);
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onClosedToRight() {
                    draggablePanel.removeAllViews();
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onUnMaximized() {
                    draggablePanel.disableBottomView(false);
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onMaximized() {
                    isFullScFromMini = true;
                    pipHandler.removeCallbacks(runnapipa);
                    pipHandler.postDelayed(runnapipa, PIP_DELAY);
                    draggablePanel.disableBottomView(false);
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
                }
            });
            TypedValue typedValue = new TypedValue();
            getResources().getValue(R.dimen.x_scale_factor, typedValue, true);
            float xScaleFactor = typedValue.getFloat();
            typedValue = new TypedValue();
            getResources().getValue(R.dimen.y_scale_factor, typedValue, true);
            float yScaleFactor = typedValue.getFloat();
            draggablePanel.setXScaleFactor(xScaleFactor);
            draggablePanel.setYScaleFactor(yScaleFactor);
            draggablePanel.setTopViewHeight(
                    getResources().getDimensionPixelSize(R.dimen.top_fragment_height));
            draggablePanel.setTopFragmentMarginRight(
                    getResources().getDimensionPixelSize(R.dimen.top_frag_right_margin));
            draggablePanel.setTopFragmentMarginBottom(
                    getResources().getDimensionPixelSize(R.dimen.top_fragment_margin));
            draggablePanel.initializeView();
            draggablePanel.maximize();
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
        }
    

    要查看完整的示例,请检查

    我正在使用DragblePanel以获得相同类型的效果

    private void initializeDraggablePanel(Fragment fragmentView, Fragment bottomFragment) {
            draggablePanel.removeAllViews();
            draggablePanel.setFragmentManager(getSupportFragmentManager());
            draggablePanel.setTopFragment((Fragment) fragmentView);
            draggablePanel.setBottomFragment(bottomFragment);
            draggablePanel.setVisibility(View.VISIBLE);
            draggablePanel.setClickToMaximizeEnabled(true);
            draggablePanel.setDraggableListener(new DraggableListener() {
                @Override
                public void onClosedToLeft() {
                    draggablePanel.removeAllViews();
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onMinimized() {
                    isFullScFromMini = true;
                    pipHandler.removeCallbacks(runnapipa);
                    pipHandler.postDelayed(runnapipa, PIP_DELAY);
                    draggablePanel.disableBottomView(true);
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onClosedToRight() {
                    draggablePanel.removeAllViews();
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onUnMaximized() {
                    draggablePanel.disableBottomView(false);
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                }
    
                @Override
                public void onMaximized() {
                    isFullScFromMini = true;
                    pipHandler.removeCallbacks(runnapipa);
                    pipHandler.postDelayed(runnapipa, PIP_DELAY);
                    draggablePanel.disableBottomView(false);
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
                }
            });
            TypedValue typedValue = new TypedValue();
            getResources().getValue(R.dimen.x_scale_factor, typedValue, true);
            float xScaleFactor = typedValue.getFloat();
            typedValue = new TypedValue();
            getResources().getValue(R.dimen.y_scale_factor, typedValue, true);
            float yScaleFactor = typedValue.getFloat();
            draggablePanel.setXScaleFactor(xScaleFactor);
            draggablePanel.setYScaleFactor(yScaleFactor);
            draggablePanel.setTopViewHeight(
                    getResources().getDimensionPixelSize(R.dimen.top_fragment_height));
            draggablePanel.setTopFragmentMarginRight(
                    getResources().getDimensionPixelSize(R.dimen.top_frag_right_margin));
            draggablePanel.setTopFragmentMarginBottom(
                    getResources().getDimensionPixelSize(R.dimen.top_fragment_margin));
            draggablePanel.initializeView();
            draggablePanel.maximize();
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
        }
    

    完整的示例检查

    您在这上面找到什么了吗?您在这上面找到什么了吗?