2016-09-09 9 views
3

Androidサービスで追加されたTYPE_SYSTEM_OVERLAYビューを削除したいと思います。私のサービスは..ですタッチでTYPE_SYSTEM_OVERLAYビューを削除するには

OverlayServiceサービス

public class OverlayService extends Service { 
    WindowManager wm; 
    View myView; 

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

    @Override 
    public void onCreate() { 
     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       ViewGroup.LayoutParams.FILL_PARENT, 
       ViewGroup.LayoutParams.FILL_PARENT, 0, 0, 
       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
       WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
         | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
         | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 
         | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, 
       PixelFormat.RGBA_8888); 

     wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
     LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
     myView = inflater.inflate(R.layout.activity_charging, null); 


     myView.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       System.out.println("==== Remove View "); 
       wm.removeView(myView); 
       return false; 
      } 
     }); 

     wm.addView(myView, params); 
     super.onCreate(); 
    } 
} 

アプリは呼び出しがあるときにビューが画面に追加された私の上記のコードあたりが、そのボタンのクリックのようなXML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/btnRemoveView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:layout_gravity="center_horizontal" 
     android:text="Remove View" /> 
</RelativeLayout> 

私は何をしたいのですか..ボタンをクリックして作成したビューを削除したいのですが、カスタムTYPE_SYSTEM_OVERLAYを削除することが可能な場合はどうすればいいですか?助けてください..

ありがとう。あなたはおそらくそれを固定または上の移動が、念のためにしている

答えて

2

:私はTYPE_SYSTEM_OVERLAYは、タッチイベントに応答することができなかったので、

そのは応答していない理由があります。そして、それはあなたのコードの残りの部分と正しく応答しなければならない

WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
     | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 

:これを行う方法は、タイプTYPE_SYSTEM_ALERTを使用して、フラグを使用することです。

関連する問題