Android 系统自由窗口相关修改(AndroidQ)

本文详细介绍了在Android Q系统中如何进行自由窗口的相关修改,包括打开自由窗口的配置、窗口控制栏的布局方式、自由窗口圆角的切换、限制窗口移动以及添加拖动边框等功能。

自由窗口相关修改 AndroidQ

1 打开自由窗口相关配置

// frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
public void retrieveSettings(ContentResolver resolver) {
   
   
    // wugm: enable free form setting
    Settings.Global.putInt(resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 1);
    Settings.Global.putInt(resolver, DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, 1);
    final boolean freeformWindowManagement =
    mContext.getPackageManager().hasSystemFeature(FEATURE_FREEFORM_WINDOW_MANAGEMENT)
        || Settings.Global.getInt(
        resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0;
    // 省略部分
}
<!--frameworks/base/core/res/res/values/config.xml-->
<bool name="config_freeformWindowManagement">true</bool>

2 窗口控制栏布局方式

标题是否直接悬浮显示在内容上,而不是下推内容

// frameworks/base/core/java/com/android/internal/widget/DecorCaptionView.java
public void setPhoneWindow(PhoneWindow owner, boolean show) {
   
   
    mOwner = owner;
    mShow = show;
    if (SystemProperties.getBoolean("persist.sys.freeform", true)) {
   
   
        owner.setOverlayWithDecorCaptionEnabled(false);
    }
    mOverlayWithAppContent = owner.isOverlayWithDecorCaptionEnabled();
    if (mOverlayWithAppContent) {
   
   
        mCaption.setBackgroundColor(Color.TRjavaANSPARENT);
    } else {
   
   
        mCaption.setBackgroundColor(Color.GRAY);
    }
    updateCaptionVisibility();
    // 省略部分
}

3 自由窗口圆角切换

设置圆角矩形

// frameworks/base/core/java/com/android/internal/policy/DecorView.java
private static final ViewOutlineProvider FREEFORM_OUTLINE_PROVIDER = new ViewOutlineProvider() {
   
   
    @Override
    public void getOutline(View view, Outline outline) {
   
   
        outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 20);
        outline.setAlpha(1f);
    }
};
private void setDecorCaptionShade(DecorCaptionView view) {
   
   
    setClipToOutline(true)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值