Ho creato un'applicazione che esegue un servizio. Il servizio ha fondamentalmente un pulsante di sovrapposizione e il pulsante su clic fa qualcosa. Tuttavia, ogni volta, faccio clic sul pulsante, l'applicazione sullo sfondo del pulsante risponde. Per favore qualcuno può aiutarmi?Android: pulsante overlay onClick non viene mai chiamato
Ho fatto riferimento a link.
Ecco il mio codice: il codice
Servizio:
public class HUD extends Service implements OnTouchListener{
Button mButton;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
String s;
s = "Hari";
return null;
}
@Override
public void onCreate() {
super.onCreate();
//mView = new HUDView(this);
mButton = new Button(this);
mButton.setText("Overlay button");
mButton.setOnTouchListener(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.TOP;
params.setTitle("Load Average");
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mButton, params);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getBaseContext(),"onDestroy", Toast.LENGTH_LONG).show();
if(mButton != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mButton);
mButton = null;
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(this,"Overlay button event", Toast.LENGTH_SHORT).show();
return false;
}
}
Il manifesto ha la seguente autorizzazione così:
Ho provato a cambiare il tipo di
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
Ora, ovunque clicco, viene chiamato l'evento tocco. Per favore qualcuno può aiutarmi?
Il ritorno false in onTouch comunicherà all'applicazione di continuare a elaborare il tocco come se il pulsante non fosse stato toccato. Prova a restituire true. – anthonycr