在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量,分别对应Toast.LENGTH_LONG(3.5秒)和Toast.LENGTH_SHORT(2秒)的值
 

   private static final int LONG_DELAY = 3500; // 3.5 seconds           

   private static final int SHORT_DELAY = 2000; // 2 seconds

   在下面的方法中进行了调用:

private void scheduleTimeoutLocked(ToastRecord r, boolean immediate)

    {

        Message m =Message.obtain(mHandler, MESSAGE_TIMEOUT, r);

        long delay =immediate ? 0 :(r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY);

       mHandler.removeCallbacksAndMessages(r);

       mHandler.sendMessageDelayed(m, delay);

    }

   也就是说,Toast..makeText(Context context,CharSequence text, int duration).show() 中的duration只能设这两个值,其他值是没有用处的。





Logo

「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!

更多推荐