2013-08-22 62 views
7

在我的應用程序中,我正在尋找顯示始終可見,半透明的狀態,但我很難弄清楚它是如何完成的。如何創建可覆蓋主屏幕的透明活動,但在按下主屏幕或後退按鈕時不會解散?

Facebook Messenger和我見過的一些其他應用程序這樣做,所以我知道這是可能的。他們使用SYSTEM_ALERT_WINDOW權限顯示大多數透明的活動或對話框「始終在上」。

但我不明白的是,他們如何使它們在按下後退或主頁按鈕時不會關閉?換句話說,他們看起來並不像活動一樣,但我不明白他們可能是什麼?

這裏任何幫助將是非常讚賞:-)

回答

14

您可以創建一個透明的活動與

幫助詞根記憶佈局在XML文件中的透明背景使用

android:background="@android:color/transparent" 

2.And另外,要確保你的清單文件的主題透明針對特定胡亞蓉

<activity 
     android:name="Your activity" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" > 
    </activity> 

3.And的背壓在乘坐OnBackPressed()方法,並刪除super.onBackPressed()要安裝

@Override 
    public void onBackPressed() 
     { 
     // TODO Auto-generated method stub 
     } 
+0

您還可以使用菜單或動作欄爲使這種觀點,而不是一個活動 – Meenal

+0

你好。感謝您的回答:-)不幸的是,我甚至無法讓主題工作 - 它只是說錯誤找不到資源...我的分鐘sdk是8,如果這有什麼不同,我的目標是17。如果我更改默認AppBaseTheme的父項,那麼沒有錯誤,但它也不起作用。 –

+0

如果你能提供你的代碼或錯誤日誌,這對我來說會更有幫助。 – Meenal

3

可以使用下面codes..it爲我工作,除了它不要讓應用程序從內部存儲..

LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
View oView = layoutInflater.inflate(R.layout.activity_transperant, null); 
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
     WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
     0 | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
     PixelFormat.TRANSLUCENT);   
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
wm.addView(oView, params); 
相關問題