FacebookはどのようにAndroidでチャットヘッドを作成していますか?他のすべてのビューの上にフローティングビューを作成するAPIとは何ですか?チャットヘッドの作成にFacebookが使用しているAndroidのAPIは何ですか?
答えて
Thisいずれか
は、アプリケーションが他のすべてのアプリケーションの上に示されたタイプ TYPE_SYSTEM_ALERTを使用してウィンドウを開くことができます。 このアクセス許可を使用するアプリケーションはごくわずかです。これらのウィンドウは、ユーザーとのシステムレベルの対話のために となっています。
定数値: "android.permission.SYSTEM_ALERT_WINDOW"
// EDIT: 完全なコードhere:
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);
}
}
は何とかサービスを開始することを忘れないでください:
startService(new Intent(context, ChatHeadService.class));
..このサービスをマニフェストに追加します。
もっと奇妙なことがあると思います。 "頭"の外での入力とドラッグ可能性の扱いはどうでしょうか?私はあなたが少なくともウィンドウ属性を更新するいくつかの巧妙なロジックと同様に[FLAG_NOT_TOUCH_MODAL](http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_NOT_TOUCH_MODAL)を必要としていると思う、それを動かす)あなたがそれをドラッグしている間。 – Delyan
そのチャットヘッドを削除するには? –
フローティングUIを作成するために開発したSDKについて言及する価値はあると思っています:www.tooleap.com – Arik
一般に、Androidのアクティビティは全画面表示の概念的に専用のUIで、すべてのやり取りを行います。これにはいくつかの例外があります。まず、画面いっぱいにないポップアップダイアログがあります。もう1つはAndroidトーストで、非インタラクティブなポップアップです。手を触れることはできません。試してみると、下にあるものに移動します。
独自の特別なUIも使用できます。タイプフラグを指定して、直接ビューをWindowManager
に追加することができます。チャットヘッドはおそらくTYPE_PHONEを使用します。いくつかの似たタイプがありますが、目的は同じです:親アプリケーションが存在していない状態で他のものの上に表示される特別な目的のオーバーレイです。
これは、これまでのところ、インタラクションの問題が原因で、これまでのところしかできません。最初は、オーバーレイがすべての相互作用を吸収するため、ヘッドがイベントを取得するだけでなく、下のすべてのものとのやりとりをブロックします。
LayoutParamsを使用してこの動作を構成します。 FLAG_NOT_TOUCH_MODAL
は、表示領域外のイベントが基になるUIに移動することを意味します。あなたは今、それが動作するが、それ以外の悪いことは、バック/メニューボタンがアプリケーションに向けられず、キーボードもないように起こることがわかります。それを解決するにはFLAG_NOT_FOCUSABLE
が必要です。
非フォーカスビットからも副作用があります。オーバーレイとのやりとりはこれ以上ありません。ボタンを押す。あなたはいつも数学をすることができるいくつかの基本的なタッチイベントを得ることができます、それはおそらくチャットヘッドのために十分です。 UIアニメーションのような多くの領域であなた自身を残すことに気をつけてください。
選択的な対話の消費を許可するなど、詳細の概要はthis StackOverflow threadにあります。特に、回答リンクの1つでは、最終的にhereになります。これは、良いサンプルプロジェクトです。 ICSはこの仕組みを少し変えましたが、スレッドによってそのことが説明されています。
これはすべて公開APIのものですが、当然のことながら主流のようには見えません。ドキュメンテーションは、特別なシステムアプリの動作を参照していますが、その理由は十分です。もし誰もがそれをしたらどうしますか?
これらのビューで何らかの向きの変更をブロックできますか?基本的なアクティビティが方向を切り替える場合、私の視点も方向を変えます。 –
いいえ。オリエンテーションの変更は、アクティビティだけでなく、デバイス全体に適用されます。 –
Springy headsは、チャットヘッドのバナーベースの動作をそのままの状態で提供します。定義しなければならないのは、チャットヘッドがクリックされたときにチャットヘッドとフラグメントがオープンできるドロアブルだけです。最小化するとチャットヘッドが崩壊し、ドラッグされたときに指に従います。
プロジェクトには、すべての組み込み機能を示すデモアプリケーションが含まれています。これを使用するには、これをgradleの依存関係に追加する必要があります。
compile 'com.flipkart.springyheads:library:0.9.6'
こんにちは@KiranKumar、あなたは非常に明確なライブラリを作成しました..私はそれを愛しています..私はこのライブラリからさまざまな側面を学びたいと思っています..私はアプリケーションウィンドウの外でそれを実行しようとしています、しかし、問題は、アプリのウィンドウの外でチャットヘッドをクリックすると発生します。フラグメントが開いてjava.lang.OutOfMemoryErrorを返すことができなくなります。あなたの側から可能な場合これで私に何らかの方法を与えることができます..それは喜んで敬意を表します。 – arraystack
@arraystackこれでサービスで実行できます。 GitHubリポジトリのブランチであればリストを確認してください –
@KiranKumarありがとうございました。新しいlibの問題は、マシュマロバージョンのアプリケーションを引き出す許可です – arraystack
- 1. グラフAPIを使用してFacebookグループを作成するには?
- 2. Graph APIを使用してFacebookにフォトアルバムを作成する
- 3. facebook APIを使用してfacebookのウェブサイトの外からFacebookアカウントを作成できますか?
- 4. Facebook APIを使用してリードフォームコンテキストカードを作成する
- 5. Facebook API Android APIをWeb APIに使用
- 6. Facebook Graph APIでアプリによって作成されたグループは何ですか?
- 7. グラフのapiを使用してfacebookページで作成するタブの数
- 8. Open Graph APIを使用してプログラムでFacebookページを作成
- 9. Graph APIを使用してFacebookページのビデオキャプション(.srt)を作成する方法は?
- 10. Facebook APIとFacebook ConnectはJavaを使用していますか?
- 11. チャットヘッドがクリックイベントを通過[Android]
- 12. rest APIを使用してAndroidでfacebookをログインする方法
- 13. 私は次のコードで、グラフAPIを使用してイベントを作成しようとしていますFacebookの
- 14. Facebook Graph APIを使用してグループに代わってイベントを作成する
- 15. Google Maps APIを使用してFacebookアプリケーションを作成できますか?
- 16. AppリンクのFacebookモバイルホスティングAPIがAndroidで動作しない
- 17. Facebook Android SDK(APIキー)を使用しています
- 18. SYSTEM_ALERT_WINDOW android M - appクラッシュのチャットヘッド
- 19. Facebook FlacedeckはどのAPIを使用していますか?
- 20. Facebook Graph APIはどのタイムゾーンを使用していますか?
- 21. AndroidでいくつかのAPIを使用するベストプラクティスは何ですか
- 22. Facebook Live APIを使用してライブビデオオブジェクトを作成するときのプライバシー設定
- 23. Facebookで写真アルバムを作成する方法APIを使用して
- 24. グラフapiを使用してFacebookにイベントを作成する方法
- 25. どのようにAndroid APIを使用してホーム画面のようなFacebookを達成するには?
- 26. FacebookブックAPIを使用して既存のFacebookブックアプリを作成する子供向けFacebookブック
- 27. Android用Facebook API
- 28. Facebookビジネスマネージャのページ用のAPP/API作成ですか?
- 29. Facebookのsdkを使用してiosでFacebookのテストユーザーを作成する方法
- 30. Google APIを使用してAndroidソースコードを作成するにはどうすればよいですか?
も「ヘッズチャット」しているこのアプリ https://play.google.com/store/apps/details?id=com.ninja.sms – Oli
あなたが例を探しているなら、見HTTPS ://github.com/marshallino16/FloatingNotification – marshallino16
デモと簡単なライブラリはhttps://github.com/ericbhatti/floatiesにあります。このライブラリを使用すると、わずか2行でフローティングウィンドウを作成できます。 –