You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中按下返回键或Home键时如何将应用最小化为特定尺寸

Android按下返回/Home键时最小化为特定尺寸窗口实现方案

1. 拦截返回键与Home键触发时机

拦截返回键

重写Activity的onBackPressed()方法,替换默认的页面销毁逻辑,触发自定义小窗口启动逻辑:

@Override
public void onBackPressed() {
    // 跳过默认返回销毁行为,启动固定尺寸窗口
    enterCustomPinnedMode();
}

监听Home键离开事件

系统不允许直接拦截Home键,但可以通过onUserLeaveHint()方法捕获用户主动离开应用的场景(包括按下Home键):

@Override
protected void onUserLeaveHint() {
    super.onUserLeaveHint();
    enterCustomPinnedMode();
}

2. 实现特定尺寸的固定窗口模式

Android 7.0(API 24)及以上支持多窗口固定模式(Pinned Mode),可通过以下步骤设置自定义窗口尺寸:

步骤1:配置Manifest支持多窗口

给目标Activity添加resizeableActivity属性(默认已开启,显式声明更稳妥):

<activity
    android:name=".YourTargetActivity"
    android:resizeableActivity="true">
    <!-- 其他Activity配置 -->
</activity>

步骤2:编写固定窗口启动逻辑

创建指定宽高的ActivityOptions,启动固定窗口模式:

private void enterCustomPinnedMode() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        // 已处于多窗口模式时无需重复触发
        if (!isInMultiWindowMode()) {
            // 定义目标窗口尺寸(示例:400dp宽,600dp高)
            int targetWidthDp = 400;
            int targetHeightDp = 600;
            
            // dp转px适配不同屏幕密度
            DisplayMetrics metrics = getResources().getDisplayMetrics();
            int widthPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, targetWidthDp, metrics);
            int heightPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, targetHeightDp, metrics);
            
            // 设置窗口启动边界
            ActivityOptions options = ActivityOptions.makeBasic();
            options.setLaunchBounds(new Rect(0, 0, widthPx, heightPx));
            
            // 启动固定窗口模式
            startPinnedMode(this, null, options.toBundle());
        }
    } else {
        // 低版本设备不支持多窗口,执行默认应用最小化逻辑
        moveTaskToBack(true);
    }
}

3. 关键注意事项

  • 版本兼容性:仅API 24+支持多窗口模式,低版本设备需降级处理(如调用moveTaskToBack(true)直接最小化应用)。
  • 系统限制:部分定制ROM可能限制固定窗口的尺寸调整权限,需在目标设备上测试验证效果。
  • 触发场景:onUserLeaveHint()会在用户切换到其他应用(如按最近任务键)时也触发,若需仅响应Home键,暂无完美系统API支持,可结合业务场景做折中处理。
  • 窗口位置:示例中设置窗口从左上角启动,可通过调整Rect的left/top值修改初始显示位置。

内容的提问来源于stack exchange,提问作者Sita Soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 12:35:05