55-Android之修改Toast的显示时长

5 篇文章 1 订阅
1 篇文章 0 订阅

55-Android之修改Toast的显示时长

平台:SRPD Android10 SC9832E

在系统中,输入法切换的提示,我使用的是Toast的来实现的。

后续客户测试反映,输入法切换的提示显示太慢,要求改进。

我因此针对输入法的Toast的显示,增加了一个Toast.LENGTH_INPUT属性。

frameworks/base/core/java/android/widget/Toast.java

@IntDef(prefix = { "LENGTH_" }, value = {
     		LENGTH_SHORT,
            LENGTH_LONG,
            LENGTH_INPUT // TODO 添加
})
@Retention(RetentionPolicy.SOURCE)
public @interface Duration {}

public static final int LENGTH_INPUT = 2;  // TODO 添加

frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java 

@GuardedBy("mToastQueue")
private void scheduleDurationReachedLocked(ToastRecord r){
    mHandler.removeCallbacksAndMessages(r);
    Message m = Message.obtain(mHandler, MESSAGE_DURATION_REACHED, r);
    // TODO 此处修改 @{
    // int delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
    int delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : (r.duration == Toast.LENGTH_INPUT ? 800 : SHORT_DELAY);
    // @}
    // Accessibility users may need longer timeout duration. This api compares original delay
    // with user's preference and return longer one. It returns original delay if there's no
    // preference.
    delay = mAccessibilityManager.getRecommendedTimeoutMillis(delay,
            AccessibilityManager.FLAG_CONTENT_TEXT);
    mHandler.sendMessageDelayed(m, delay);
}

如果需要修改Toast的Toast.LENGTH_SHORT和Toast. LENGTH_LONG的默认时长,请修改NotificationManagerService中LONG_DELAY和SHORT_DELAY常量的值:

frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java 

static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT;
static final int SHORT_DELAY = 2000; // 2 seconds,TODO 修改该值


frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

public static final int TOAST_WINDOW_TIMEOUT = 3500; // 3.5 seconds, TODO 修改该值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值