在项目开发中很少去关注细节
这里同标题所说 Toast.makeText 我们知道这个方法有两个重载方法(如截图)
我们可以发现最后一个参数是 int duration 控制显示提示信息的显示时间
一般我们在项目中有 这两个值
Toast.makeText(this, "" ,Toast.LENGTH_LONG).show();
Toast.makeText(this, "" ,Toast.LENGTH_SHORT).show();
Toast.LENGTH_LONG
Toast.LENGTH_SHORT
这是Toast类中的两个常量
但是对应的是1 和 0 可想而知
// Field descriptor #8 I
public static final int LENGTH_SHORT = 0;
// Field descriptor #8 I
public static final int LENGTH_LONG = 1;
这个是个int 型 那么我们应该可以传一个int类型的参数 如:30000
但是其实我们发现 没有作用 它根本不是毫秒值
于是我们追中Andorid源码 在显示的时候 这个 0 和 1 是如何处理的!我们发现(如下:)
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
long delay = immediate ? 0 : (r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY);
我们可以看出 如果是0 则 是2秒 如果是 1 则是3.5秒 而且这里是一个三位运算符 呵呵!
我们反之看一下api 为何有这样的方法 传递不明确啊!我们发现 如下图:
其实 api是有提示的!我们没仔细看! 这句英语大家都应该能看懂!
呵呵 神奇的api!
(个人微信号) (技术公众号)