2017-04-26 7 views
0

私のアプリケーションの一番上に表示するにはビューが必要です。表示されていると、アプリケーションの他のビュー(すべてのフラグメントとアクティビティ)の一番上に表示され続けます。フローティングアクションボタンのように聞こえますが、常にアプリの上部に表示されます。Android:どのようにWindowManagerにビューを追加し、常にアプリケーションの上部に浮かせるようにしますか?

私は自分の携帯電話のWindowManagerにビューを追加することでそれを行うことができ、私は私のアプリを終了するときにそれを隠す私は私のアプリを再開するときに再び表示することがわかっています。このトリッキーな方法はうまくいくかもしれませんが、いくつかの追加の許可が必要です。これは回避しようとしています。

私のアプリにのみ公開したい場合は、ユーザーから追加の許可を求めずに達成できますか?答えが「はい」ならば、どうですか?キーはビューのLayoutParamsのようですが、試しましたが失敗しました。

答えがいくつかの詳細なコードと説明を表示できる場合はいいですか?あなたは

まずマニフェスト

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

に権限を追加し、この目的のためにウィンドウマネージャを使用する必要が

答えて

2

は、表示したい画像を追加します。

chatheadImg = (ImageView)chatheadView.findViewById(R.id.chathead_img); 

次に、サービスを作成してウィンドウマネージャを追加します。

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, 
      PixelFormat.TRANSLUCENT); 
    params.gravity = Gravity.TOP | Gravity.LEFT; 
    params.x = 0; 
    params.y = 100; 

そして、ちょうどよりよく理解するためにこれらのチュートリアルにこの答えを

http://www.androidhive.info/2016/11/android-floating-widget-like-facebook-chat-head/

https://github.com/henrychuangtw/Android-ChatHead

+1

感謝をチェックし、私は本当にドン」ビュー

chatheadView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //To do break; case MotionEvent.ACTION_MOVE: break; }); 

にタッチイベントを登録します私のユーザーからの許可を求めています。この許可のない方法であれば、何卒よろしくお願いいたします。 – Anthonyeef

+1

アンドロイド6.0の下では、その許可を求める必要はありませんが、アンドロイド6.0を起動する際には、明示的にアクセス許可を求めなければなりません。 –

関連する問題