web-dev-qa-db-ja.com

ホーム画面をオーバーレイできるが、ホームボタンまたは戻るボタンが押されても閉じられない透明なアクティビティをどのように作成しますか?

私のアプリでは、常に表示されている半透明のステータスを表示しようとしていますが、それがどのように行われるかを理解するのに苦労しています。

Facebook Messengerと私が見た他のいくつかのアプリはそれを行うので、それが可能であることがわかっています。それらは、SYSTEM_ALERT_WINDOW権限を使用して、ほとんど透過的なアクティビティまたはダイアログを「常にオントップ」で表示します。

しかし、私が理解していないのは、戻るボタンまたはホームボタンが押されたときに閉じられないようにする方法です。言い換えれば、彼らは活動のように振る舞うようには見えませんが、他に何ができるのかわかりませんか?

ここでの助けは大歓迎です:-)

10
mark_w

あなたはの助けを借りて透明な活動を作成することができます

  1. を使用して、xmlファイルのレイアウトの背景を透明にします

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

  2. また、マニフェストファイルのテーマをその特定のアクティビティに対して透過的にします

  3. また、バックプレスの場合は、onBackPressed()メソッドをオーバーライドし、super.onBackPressed()を削除します。

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

以下のコードを使用できます。内部ストレージからアプリをインストールできないことを除いて、私にとってはうまくいきました。

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);
3
Slasher_bd