À l'heure actuelle, tout ce que j'essaie de faire est de détecter le moment où l'écran est enfoncé, puis d'afficher un message de journal pour confirmer que cela s'est produit. Jusqu'à présent, mon code est modifié à partir de l'exemple de code CameraPreview (il prendra éventuellement une photo) de sorte que la majeure partie du code se trouve dans une classe qui étend SurfaceView. L'API pour l'exemple de code du SDK est 7.
Essayez le code ci-dessous pour détecter les événements tactiles.
mView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//show dialog here
return false;
}
});
Pour afficher la boîte de dialogue, utilisez la méthode d'activité showDialog (int) . Vous devez implémenter onCreateDialog (). Voir la documentation pour plus de détails.
Voici un exemple simple sur la façon de détecter un événement tactile simple, d’obtenir des coordonnées et de porter un toast. Les événements dans cet exemple sont Action bas, Déplacer et Action haut.
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.MotionEvent;
import Android.widget.Toast;
public class MainActivity extends Activity {
private boolean isTouch = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int X = (int) event.getX();
int Y = (int) event.getY();
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(this, "ACTION_DOWN AT COORDS "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
isTouch = true;
break;
case MotionEvent.ACTION_MOVE:
Toast.makeText(this, "MOVE "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_UP:
Toast.makeText(this, "ACTION_UP "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();
break;
}
return true;
}
}
Je l'ai fait comme ça:
public class ActivityWhatever extends Activity implements OnTouchListener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);
//the whole screen becomes sensitive to touch
mLinearLayoutMain = (LinearLayout) findViewById(R.id.layout_main);
mLinearLayoutMain.setOnTouchListener(this);
}
public boolean onTouch(View v, MotionEvent event)
{
// TODO put code in here
return false;//false indicates the event is not consumed
}
}
dans le xml de votre vue, spécifiez:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:id="@+id/layout_main">
<!-- other widgets go here-->
</LinearLayout>
J'ai essayé beaucoup et j'ai finalement trouvé une solution pour détecter le toucher sur un écran après 2 jours.
Kotlin:
Si vous rencontrez une barre de navigation inférieure et que vous souhaitez vous cacher au toucher, essayez ceci!
Activity.dispatchTouchEvent (MotionEvent) - Ceci permet à votre activité D'intercepter tous les événements tactiles avant qu'ils ne soient envoyés à la fenêtre .
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
if (event.getAction() === MotionEvent.ACTION_DOWN) {
if (event.getAction() === MotionEvent.ACTION_DOWN) {
}
} else if (event.getAction() === MotionEvent.ACTION_MOVE) {
tabLayout.visibility = View.GONE
tv_chat.visibility = View.GONE
} else if (event.getAction() === MotionEvent.ACTION_UP) {
tabLayout.visibility = View.VISIBLE
tv_chat.visibility = View.VISIBLE
}
return super.dispatchTouchEvent(event)
}