Cabeza de chat Haga clic en eventos

Utilicé un tutorial en línea para crear una aplicación sencilla que agrega ImageButton a la ventana. Por ventana quiero decir que el ImageButton se muestra por encima del resto de las actividades. Siempre es visible.

No sé cómo manejar los eventos de clic para la cabeza de chat. He establecido un onClickListener pero no hace nada.

Aquí está mi ChatHeadService.java

package com.example.test; import android.app.Service; import android.content.Intent; import android.graphics.PixelFormat; import android.os.IBinder; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.ImageButton; import android.widget.ImageView; 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 ImageButton(this); chatHead.setImageResource(R.drawable.ic_launcher); 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.CENTER; params.x = 0; params.y = 100; windowManager.addView(chatHead, params); chatHead.setClickable(true); chatHead.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { } }); 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); } } 

prueba esto :

  case MotionEvent.ACTION_UP: if( (Math.abs(initialTouchX - event.getRawX())<5) && (Math.abs(initialTouchY - event.getRawY())<5) ) { Log.e(TAG,"It's a click ! "); } else Log.e(TAG,"you moved the head"); return true; 
  • Superposición de vista de aplicación de Android (HUD)
  • La importación com.android.internal.R no se puede resolver
  • Dibujo sobre otras aplicaciones en Android
  • Superposición de teclas de teclado de Android
  • Android: ¿Cómo overlay-a-bitmap / draw-over un mapa de bits?
  • Cómo agregar vista de superposición sobre otra vista en android?
  • El desplazamiento y el zoom de MapView es lento después de agregar muchas superposiciones
  • Clips de superposición de objetos de galería
  • Captura de captura de pantalla en el teléfono Android durante la reproducción de vídeo y vista previa de la cámara
  • Cómo guardar la superposición con vista previa de la cámara en android?
  • Cómo forzar mezcla alfa en un videoview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.