直接上干货,这是一个全局的 Toast 工具类使用起来简单方便,还能满足一次只显示一条 toast 的要求:
import android.widget.Toast;
/**
* Created by toby on 18-1-9.
*/
class GlobalToast {
private static Toast toast = null;
@SuppressLint("ShowToast")
public static void show(CharSequence text, int toastDuration){
try{
toast.getView().isShown();
toast.setText(text);
} catch (Exception e) {
toast = Toast.makeText(MyApplication.globalContext(), text, toastDuration);
}
toast.show();
}
public static void show(CharSequence text) {
show(text, Toast.LENGTH_SHORT);
}
}
其中 MyApplication.globalContext() 可以参考我的这篇文章 Android 获取全局 Context 对象
使用实例:
@Override
protected void onResume() {
super.onResume();
GlobalToast.show("进入加速监测...", Toast.LENGTH_SHORT);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (null != sensorManager) {
sensorManager.unregisterListener(sensorEventListener);
}
GlobalToast.show("退出加速监测...", Toast.LENGTH_SHORT);
}
private SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float x_value = Math.abs(sensorEvent.values[0]);
float y_value = Math.abs(sensorEvent.values[1]);
float z_value = Math.abs(sensorEvent.values[2]);
if (x_value > THRESHOLD_VALUE || y_value > THRESHOLD_VALUE
|| z_value > THRESHOLD_VALUE) {
GlobalToast.show("设备正在晃动...", Toast.LENGTH_SHORT);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
};
本文参考链接:How to avoid a Toast if there's one Toast already being shown
网友评论