全屏view 狀態列 高度

2022-03-27 23:33:08 字數 1198 閱讀 8904

引用:

用過新版本android 360手機助手都人都對 360中只在桌面顯示乙個小小懸浮視窗羨慕不已吧? 

其實實現這種功能,主要有兩步: 

1.判斷當前顯示的是為桌面。這個內容我在前面的帖子裡面已經有過介紹,如果還沒看過的趕快穩步看一下哦。 

2.使用windowmanager往最頂層新增乙個view 

a.如果獲取到狀態列的高度 

b.懸浮視窗的拖動 

c.懸浮視窗的點選事件 

有開始之前,我們先來看一下效果圖: 

接下來我們來看看floatview的**: 

複製**

**如下:

**解釋: 

int statusbarheight = frame.top; 

為獲取狀態列的高度,為什麼在event.getrawy()的時候減去狀態列的高度呢? 

因為我們的懸浮視窗不可能顯示到狀態列中去,而後getrawy為獲取到螢幕原點的距離。當我們螢幕處於全屏模式時,獲取到的狀態列高度會變成0 

(x - mstartx) < 5 && (y - mstarty) < 5 

如果我們在觸控過程中,移動距離少於5 ,則視為點選,觸發點選的**。 

複製**

**如下:

**解釋: 

的時候會在異常發現。 

最後我們再來看看activity中的實現。 

複製**

**如下:

**解釋: 

在activity中我們主要是新增懸浮窗,並且設定他的位置。另外需要注意flags的應用: 

layoutparams.flag_not_touch_modal 不影響後面的事件 

layoutparams.flag_not_focusable 不可聚焦 

layoutparams.flag_not_touchable 不可觸控 

最後我們在ondestroy()中移除到懸浮視窗。所以,我們測試的時候,記得按home鍵來切換到桌面。 

最後千萬記得,在androidmanifest.xml中來申明我們需要用到的android.permission.system_alert_window許可權 

androidmanifest.xml**如下: 

複製**

**如下:

android全屏,隱藏狀態列

方法一public class mainactivity extends activity 方法二 方法三 true true 注 1 方法一中的兩段 要在setcontentview 之前。2 方法二只能同時隱藏狀態列和標題欄。3 方法一和方法二都只應用於單個activity。方法三應用於整個程式...

Dialog全屏,去掉狀態列

dialog即使設定全屏了,但還是有狀態列占用高度這 直接將下面這行 放到你的dialog中即可 override protected void onstart 順便說下自定義dialog寬高 windowmanager.layoutparams attributes getwindow getat...

介面全屏和隱藏狀態列和亮色狀態列

介面全屏 隱藏狀態列 和 亮色狀態列區別 介面全屏 把導航欄和虛擬按鍵都隱藏了。從狀態列下拉會半透明懸浮顯示一會兒狀態列和導航欄 隱藏狀態列 把狀態列給隱藏了 亮色狀態列 狀態列文字顯示白色 內容顯示到狀態列下 全屏 protected void fullscreen else if build.v...