Chat Heads Facebook

  • Service, which will work on background also support drag drop your image.

public class ChatHeadService extends Service {

 private WindowManager windowManager;
 private ImageViewRounded chatHead;

 @Override public IBinder onBind(Intent intent) {
   // Not used
   return null;
 }

 @Override public void onCreate() {
   super.onCreate();

   windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

   chatHead = new ImageViewRounded(this);
   chatHead.setImageResource(R.drawable.lollipop);

   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);

   params.gravity = Gravity.TOP | Gravity.LEFT;
   params.x = 0;
   params.y = 100;

   windowManager.addView(chatHead, params);
   
   
   
   chatHead.setOnTouchListener(new View.OnTouchListener() {
 private int initialX;
 private int initialY;
 private float initialTouchX;
 private float initialTouchY;

 @Override public boolean onTouch(View v, MotionEvent event) {
   switch (event.getAction()) {
     case MotionEvent.ACTION_DOWN:
       initialX = params.x;
       initialY = params.y;
       initialTouchX = event.getRawX();
       initialTouchY = event.getRawY();
       return true;
     case MotionEvent.ACTION_UP:
       return true;
     case MotionEvent.ACTION_MOVE:
       params.x = initialX + (int) (event.getRawX() - initialTouchX);
       params.y = initialY + (int) (event.getRawY() - initialTouchY);
       windowManager.updateViewLayout(chatHead, params);
       return true;
   }
   return false;
 }
 
 });
   
 }

 @Override
 public void onDestroy() {
   super.onDestroy();
   if (chatHead != null) windowManager.removeView(chatHead);
 }
}

  • Start the service where you want to call it.
startService(new Intent(ChatFBNotification.this, ChatHeadService.class));

  • But Don't forget to give permission in AndroidManifest.xml file
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

Comments