3

携帯電話のアプリのすべての画面にフローティング レイアウトを表示したいのですが、このレイアウトの横で実行されている他のアプリに加えて、このレイアウトでアクションを実行でき、独自のアクションとイベントを受け取ることができます

そして、ここに私が望むことをするアプリがあります https://play.google.com/store/apps/details?id=com.ninja.sms

これが私が取り組んできたアプローチです: WindowManager を使用してレイアウトを描画し、サービスを使用してこのレイアウトを管理しました。

次のライブラリhttps://github.com/t0mm13b/TouchSoftlyを使用しました が、いくつか問題があります。2. サービスを起動したアクティビティが強制終了されると、レイアウトが消えます。

そのため、次のスニペットでいくつかのカスタマイズを行いました

    _layOutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSLUCENT);
    _layOutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSLUCENT);

    _layOutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
    _layOutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
    if (_layOutParams != null) {
        Log.d(TAG, "onCreate() - Got _layOutParams!");
        _layOutParams.gravity = Gravity.RIGHT | Gravity.TOP;
    } else
        Log.d(TAG, "onCreate() - _layOutParams is null! :(");


    _hudPageView = _layOutInflater.inflate(R.layout.service_hudpageview, null);

結果は次のとおりです。レイアウトは既に描画されており、タッチ イベントを取得できますが、レイアウトが画面に表示されている間、ホーム、戻る、および最近のアプリ ボタンは機能せず、どのアプリにも影響しません。

だからまだ私が望むものを達成していません。

そして、ここに私が取り組んでいるソースコードとリポジトリがあるので、私のソースコードを確認できます https://github.com/mmelsabry/FloatingLayout

ここに別の質問があることは知っています Androidランチャーのフローティングウィジェット/オーバーレイ

しかし、それは役に立ちません

4

1 に答える 1

0

TYPE_SYSTEM_ALERT の代わりに TYPE_SYSTEM_OVERLAY を使用してみてください。

于 2015-05-07T08:56:35.947 に答える