• Android SystemUI去掉拖动亮度条QSPanel界面隐藏功能


    SystemUI的在下拉状态栏第二次展开的QSPanel的界面时,原生下拉状态栏界面会有亮度条SeekBar,

    当拖动的时候,亮度会改变但是同时整个QSPanel下拉状态栏也隐藏掉了 。客户要求去掉这个拖动亮度条时隐藏下拉状态栏的功能

    相关布局和代码

    1. ```
    2. /SystemUI/res/layout/quick_settings_brightness_dialog.xml 亮度条核心布局
    3. /SystemUI/res/layout/brightness_mirror.xml 包含亮度条布局
    4. /SystemUI/res/layout/qs_panel.xml 下拉状态栏第二次展开的QSPanel的界面
    5. /SystemUI/src/com/android/systemui/qs/QSPanel.java
    6. --- a/ac8257_0302/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/qs/QSPanel.java
    7. +++ b/ac8257_0302/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/qs/QSPanel.java
    8. @@ -104,9 +104,10 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
    9. setOrientation(VERTICAL);
    10. + //
    11. mBrightnessView = LayoutInflater.from(mContext).inflate(
    12. R.layout.quick_settings_brightness_dialog, this, false);
    13. - addView(mBrightnessView);
    14. + //addView(mBrightnessView); //addView 加载控件,垂直线性布局,先add的上面
    15. // M: @ {
    16. mQuickSettingsExt = OpSystemUICustomizationFactoryBase
    17. @@ -128,7 +129,8 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne
    18. ((PagedTileLayout) mTileLayout).setPageIndicator(mPanelPageIndicator);
    19. mQsTileRevealController = new QSTileRevealController(mContext, this,
    20. (PagedTileLayout) mTileLayout);
    21. -
    22. +
    23. + addView(mBrightnessView);//改变亮度条位置
    24. addDivider();
    25. mFooter = new QSSecurityFooter(this, context);
    26. /SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
    27. //去掉这个拖动亮度条时隐藏下拉状态栏的功能
    28. @@ -56,9 +56,12 @@ public class BrightnessMirrorController
    29. }
    30. public void showMirror() {
    31. - mBrightnessMirror.setVisibility(View.VISIBLE);
    32. - mVisibilityCallback.accept(true);
    33. - mNotificationPanel.setPanelAlpha(0, true /* animate */);
    34. + mBrightnessMirror.setVisibility(View.INVISIBLE);
    35. + mVisibilityCallback.accept(false);
    36. + mNotificationPanel.setPanelAlpha(255, true /* animate */);
    37. }
    38. ```
    1. /**
    2. * Add brightness view above the tile layout.
    3. *
    4. * Used to add the brightness slider after construction.
    5. */
    6. public void setBrightnessView(@NonNull View view) {
    7. if (mBrightnessView != null) {
    8. removeView(mBrightnessView);
    9. mMovableContentStartIndex--;
    10. }
    11. addView(view, 0);
    12. mBrightnessView = view;
    13. setBrightnessViewMargin();
    14. mMovableContentStartIndex++;
    15. }
    16. private void setBrightnessViewMargin() {
    17. if (mBrightnessView != null) {
    18. MarginLayoutParams lp = (MarginLayoutParams) mBrightnessView.getLayoutParams();
    19. lp.topMargin = mContext.getResources()
    20. .getDimensionPixelSize(R.dimen.qs_brightness_margin_top)+30;
    21. lp.bottomMargin = mContext.getResources()
    22. .getDimensionPixelSize(R.dimen.qs_brightness_margin_bottom);
    23. mBrightnessView.setLayoutParams(lp);
    24. }
    25. }

     src/com/android/systemui/qs/QSPanelController.java调用"setBrightnessView"方法添加亮度进度条

    1. @Inject
    2. QSPanelController(QSPanel view, QSSecurityFooter qsSecurityFooter, TunerService tunerService,
    3. QSTileHost qstileHost, QSCustomizerController qsCustomizerController,
    4. @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer,
    5. @Named(QS_PANEL) MediaHost mediaHost,
    6. QSTileRevealController.Factory qsTileRevealControllerFactory,
    7. DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
    8. QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
    9. BrightnessSliderController.Factory brightnessSliderFactory,
    10. FalsingManager falsingManager, CommandQueue commandQueue) {
    11. super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
    12. metricsLogger, uiEventLogger, qsLogger, dumpManager);
    13. mQsSecurityFooter = qsSecurityFooter;
    14. mTunerService = tunerService;
    15. mQsCustomizerController = qsCustomizerController;
    16. mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
    17. mFalsingManager = falsingManager;
    18. mCommandQueue = commandQueue;
    19. mQsSecurityFooter.setHostEnvironment(qstileHost);
    20. mBrightnessSliderController = brightnessSliderFactory.create(getContext(), mView);
    21. mView.setBrightnessView(mBrightnessSliderController.getRootView());
    22. mBrightnessController = brightnessControllerFactory.create(mBrightnessSliderController);
    23. mBrightnessMirrorHandler = new BrightnessMirrorHandler(mBrightnessController);
    24. }

  • 相关阅读:
    【LeetCode 力扣】1.两数之和 Java实现 哈希表
    SpringBoot如何实现全局异常类处理
    linux运维笔记:Linux文件系统
    10_集成学习方法:随机森林、Boosting
    技术前沿|Spark 3.3.0 中 DS V2 Push-down 的重构与新特性
    HTTPS 加密工作过程
    基于STM32的超声波雷达项目【可拟合构建平面地图】(代码开源)
    骨传导耳机伤耳朵吗?带你一分钟了解骨传导耳机
    MyBatis Mapper映射处理CLOB和BLOB类型
    【CVPR2022】用于域适应语义分割的域无关先验
  • 原文地址:https://blog.csdn.net/xiaowang_lj/article/details/132712482