他のアプリで表示できるアプリのポップアップオーバーレイを実装するにはどうすればよいですか。Androidのほかのアプリで表示できるポップアップオーバーレイを実装する方法
Facebookは、新しいFacebook MessangerバージョンでChatheadsと非常によく似た機能を実装しました。私はこれがいくつかの可能性を見て本当に驚いた。画像では、別のアプリでチャットヘッド(右の犬)が見えます。
他のアプリで表示できるアプリのポップアップオーバーレイを実装するにはどうすればよいですか。Androidのほかのアプリで表示できるポップアップオーバーレイを実装する方法
Facebookは、新しいFacebook MessangerバージョンでChatheadsと非常によく似た機能を実装しました。私はこれがいくつかの可能性を見て本当に驚いた。画像では、別のアプリでチャットヘッド(右の犬)が見えます。
This浮動 "chathead" スタイルオーバーレイの、最小限のシンプル、かつ一般的な例です。
それは物事がフロートにするために、次のコードを使用しています:
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.floating);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
完全なソースソースはhere(Apacheライセンスの下で)見つけることができます。
私が知っているその答えを投稿して後半に、私は答えを求めている他の人々
完全なソースコードはここにあるため、とにかくそれを投稿します:http://www.piwai.info/chatheads-basics
注:必要になります:あなたは行動のようにMessengerをしたい場合は、そのためのライブラリがあります<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
public class ChatHeadService extends Service {
private WindowManager windowManager;
private ImageView chatHead;
@Override public IBinder onBind(Intent intent) {
// Not used
return null;
}
@Override public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.android_head);
WindowManager.LayoutParams 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.TOP | Gravity.LEFT;
params.x = 0;
params.y = 100;
windowManager.addView(chatHead, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null) windowManager.removeView(chatHead);
}
}
が必要。
自分で実装することをお望みならば、他の人が示唆するようにウィンドウマネージャーを見てください。インスピレーションを得るには、Bubblesのソースコードもご覧ください。
すべてのアクティビティ、ダイアログ、サービスはウィンドウに添付されています。 Facebookは、バックグラウンドで実行されているサービスを維持し、サービスに彼らは
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
によってウィンドウマネージャのオブジェクトをフェッチレイアウトのparamsは現在、以下のことにより、ウィンドウマネージャにビューを追加するには、ビューを追加しながら
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
を必要として作成します。方法
windowManager.addView(yourView, params);
これは正当な質問だと思います。一部の人にとっては、それはあまり言い表せないかもしれません。質問を言い換えると、Facebook Messenger自体ではなくアプリの画面ポップアップオーバーレイにもっと焦点を当てるようになります。また、スクリーンショットはコンテキストを与えるのがいいです。 –
私の質問がより良くなることを願っています。 – Flo
Google PlayのFacebook Messangerのコメントをご覧ください。一部の人にとって、それは動作しません、それはすべてのそれらのTouchWizzesとHTC Sensesと関係があるかもしれません... –