Android Toast源码解释
时间: 2023-07-15 17:15:44 浏览: 115
Android Toast 是一个轻量级的 UI 组件,用于在屏幕上显示简短的提示信息。Toast 的使用非常简单,只需要调用 Toast.makeText() 方法设置要显示的文本和时长即可。
下面是 Toast 的源码解释:
首先,Toast 是一个系统级别的服务,它通过 WindowManager 来显示提示信息。在 Toast 的构造函数中,会创建一个 WindowManagerImpl 对象:
```
WindowManagerImpl wm = (WindowManagerImpl) context.getSystemService(Context.WINDOW_SERVICE);
```
然后,通过 LayoutInflater 来加载 Toast 的布局文件:
```
LayoutInflater inflate = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mNextView = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
```
接着,通过 Toast 的 setView() 方法将布局文件设置给 Toast:
```
setView(mNextView);
```
在 Toast 的 show() 方法中,通过 WindowManager 将 Toast 显示在屏幕上:
```
wm.addView(mNextView, mParams);
```
Toast 的显示时间由 LENGTH_SHORT 和 LENGTH_LONG 两个常量决定,分别对应短时间和长时间。在 Toast 的构造函数中,会根据传入的时长值设置 Toast 的显示时间:
```
if (duration == LENGTH_SHORT) {
mDuration = 2000;
} else if (duration == LENGTH_LONG) {
mDuration = 3500;
}
```
最后,在 Toast 的 run() 方法中,会根据显示时间来隐藏 Toast:
```
long delay = mDuration - (now - mShowTime);
if (delay <= 0) {
hide();
} else {
mHandler.postDelayed(mHide, delay);
}
```
阅读全文