2014-10-09 41 views
0

我正在嘗試創建一個可點擊的圖像,它位於所有應用程序和decktop之上,如facebook messenger。如何讓所有應用程序的浮動觸摸

,這是我的代碼

public class FloatService extends Service 
{ 
    private WindowManager windowManager; 
    private ImageView imageBtn; 

    @Override 
    public IBinder onBind(Intent intent) 
    { 
     return null; 
    } 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 

     windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

     imageBtn = new ImageView(this); 
     imageBtn.setImageResource(R.drawable.ic_launcher); 

     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 

     params.gravity = Gravity.TOP | Gravity.LEFT; 
     params.x = 0; 
     params.y = 100; 

     windowManager.addView(imageBtn, params); 
    } 

    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     if (imageBtn != null) 
      windowManager.removeView(imageBtn); 
    } 
} 

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

有在我的活動兩個按鈕的「啓動服務」之一,另一種是「一站式服務」 我點擊「開始服務「,它會創建一個可點擊的圖像,所以一切都很好。 但當我更改爲其他應用程序或離開此應用程序,可點擊圖像將消失,直到我打開我的應用程序。

感謝您的幫助

回答

1

改變窗口的類型幫你從WindowManager.LayoutParams.TYPE_PHONEWindowManager.LayoutParams.TYPE_SYSTEM_ALERT

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams. 
    WindowManager.LayoutParams.WRAP_CONTENT, 
    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, // modified 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
    PixelFormat.TRANSLUCENT); 
0

我找到解決辦法

,因爲我的手機是MIUI,它默認隱藏任何浮動窗口

所以我需要自己打開它

並感謝所有回答

相關問題