2017-05-03 64 views
0

三星Galaxy S6邊緣的Android 6.0.1(如果它的事項)安卓:Transparend背景在使用窗口管理器,

我做了一個浮動按鈕活躍在只有當前活動。它是用XML資源文件完成的,您可以在其中將背景設置爲透明。這工作正常。

現在我想讓這個按鈕爲「全局」,即在當前正在運行的任何窗口/活動之上。爲了達到這個目的,我使用WindowManager並授予ACTION_MANAGE_OVERLAY_PERMISSION。這也可以,但按鈕屬性由Windowmanager管理,而不是由XML文件管理。 結果是按鈕圖像的背景不透明。使用WindowManager查看圖片,並保留XML。

enter image description here

如何,我不是:

一)與WindowsManager使用XML文件,使按鈕圖像得到一個透明的背景是什麼?

b)至WindowsManager添加一些屬性的按鈕圖像,因此圖像變得透明背景?

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

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
    m_btnRecord = new ImageButton(this); 
    m_btnRecord.setImageResource(R.drawable.ic_recordbutton); 
    m_btnRecord.setOnTouchListener(m_recordTouchListener); 
    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.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL; 
    params.x = 0; 
    params.y = 0; 
    windowManager.addView(m_btnRecord, params); 
} 

回答

1

有兩種方法

1.使用XML

LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
      WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
      PixelFormat.TRANSLUCENT); 

    params.gravity = Gravity.RIGHT | Gravity.TOP; 
    addview = li.inflate(R.layout.traslucent, null); 

    wm.addView(myview, params); 
中的ImageView

m_btnRecord.setAlpha

  • 組阿爾法選項( 0);

  • +0

    LayoutInflater做到了! – peakpeak