實現Android懸浮窗可以通過以下方法實現:
使用WindowManager:通過WindowManager類來顯示一個懸浮窗口,可以通過添加View到WindowManager來實現。需要添加權限android.permission.SYSTEM_ALERT_WINDOW
。
使用Dialog:使用Dialog類創建一個懸浮窗口,并設置TYPE_SYSTEM_ALERT
類型。需要添加權限android.permission.SYSTEM_ALERT_WINDOW
。
使用Toast:可以通過自定義Toast的View來實現一個懸浮窗口,需要設置Toast的顯示位置為Gravity.TOP | Gravity.LEFT
。
注意:在Android 8.0及以上版本中,需要通過懸浮窗口權限來顯示懸浮窗口,可以通過以下代碼請求權限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE_OVERLAY_PERMISSION);
}
然后在onActivityResult
方法中處理權限請求結果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_OVERLAY_PERMISSION) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Settings.canDrawOverlays(this)) {
// 顯示懸浮窗口
} else {
// 用戶拒絕了權限請求,處理邏輯
}
}
}