無法通過公共 API 定製 Toast 的進入/退出動畫。 Toast 類的動畫由系統窗口管理器硬編碼控制,不暴露自定義入口。
Croutan、SuperToasts、Toasty,提供豐富動畫和樣式。View layout = inflater.inflate(R.layout.custom_toast, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // 需權限
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.CENTER;
windowManager.addView(layout, params);
// 啟動動畫、延遲移除...
注意:Android 6.0+ 需 SYSTEM_ALERT_WINDOW 權限,用戶需手動授權。