用什么原料药在Android正在Facebook的创建聊天元首?元首、原料药、Android、Facebook

2023-09-11 23:54:58 作者:迷失自我

如何Facebook的创建Android上的聊天元首?什么是API来创建的所有其他视图顶部的浮动看法?

解决方案

This之一:

  

允许应用程序打开窗口使用类型   TYPE_SYSTEM_ALERT,对其他所有程序的顶层。   很少有应用程序应该使用此权限;这些窗口的目的   用于与用户的系统级相互作用。

     

常数值:android.permission.SYSTEM_ALERT_WINDOW

//编辑: 满code 这里:

 公共类ChatHeadService延伸服务{

  私人窗口管理器窗口管理;
  私人ImageView的chatHead;

  @覆盖公共的IBinder onBind(意向意图){
    // 不曾用过
    返回null;
  }

  @覆盖公共无效的onCreate(){
    super.onCreate();

    窗口管理=(窗口管理器)getSystemService(WINDOW_SERVICE);

    chatHead =新ImageView的(这一点);
    chatHead.setImageResource(R.drawable.android_head);

    WindowManager.LayoutParams PARAMS =新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);
  }

  @覆盖
  公共无效的onDestroy(){
    super.onDestroy();
    如果(chatHead!= NULL)windowManager.removeView(chatHead);
  }
}
 

  

不要忘记以某种方式启动服务:

  startService(新意图(背景下,ChatHeadService.class));
 

Android集成Facebook第三方登录,全流程

How does Facebook create the Chat Heads on Android? What is the API to create the floating views on top of all other views?

解决方案

This one:

Allows an application to open windows using the type TYPE_SYSTEM_ALERT, shown on top of all other applications. Very few applications should use this permission; these windows are intended for system-level interaction with the user.

Constant Value: "android.permission.SYSTEM_ALERT_WINDOW"

//EDIT: The full code 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);
  }
}

Don't forget to start the service somehow:

startService(new Intent(context, ChatHeadService.class));