Comme le titre l'indique, lorsque vous touchez l'écran, il brille et des marques apparaissent. Je voulais faire ça, alors j'ai noté ce que j'ai regardé.
À propos, la version iOS est ici * Objective-c
Android semble utiliser onTouchEvent.
Tout d'abord, créez une classe java qui hérite de la classe Activity et implémentez onTouchEvent.
public class TapActivity extends Activity {
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tap);
    }
 @Override
    public boolean onTouchEvent(MotionEvent event) {
        float pointX = event.getX();
        float pointY = event.getY();
        return super.onTouchEvent(event);
    }
}
Désormais, pointX et pointY contiendront les coordonnées X et Y du point de contact. Après cela, si vous le faites bien avec ça.
Par exemple ...
1.activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/tapLayout"← Donnez votre identifiant
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="jp.***.***.***.***.TapActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
</RelativeLayout>
2.TapActivity.java
public class TapActivity extends Activity {
//Définir ViewGroup
    RelativeLayout tapLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//Remplacez RelativeLayout par l'ID donné en xml au ViewGroup défini
     tapLayout = (RelativeLayout)findViewById(R.id.tapLayout)
    }
@Override
    public boolean onTouchEvent(MotionEvent event) {
        float pointX = event.getX();
        float pointY = event.getY();
//Obtenez l'écran dp et préparez la taille de l'image
        float dp = getResources().getDisplayMetrics().density;
        int imgSize = (int)(50 * dp);
//Définir l'image
        ImageView img = new ImageView(getApplicationContext());
     img.setImageResource(R.drawable.Marquer l'image);
//Définir la taille de l'image dans ImageView
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(imgSize, imgSize);
        img.setLayoutParams(params);
//Réglez le point tactile pour qu'il se trouve au milieu de l'image
        img.setX(pointX-imgSize/2);
        img.setY(pointY-imgSize/2);
        img.setScaleType(ImageView.ScaleType.FIT_XY);
//Réduire l'image à la moitié de sa taille
        img.setScaleX(0.5f);
        img.setScaleY(0.5F);
//Dessiner une image
        tapLayout.addView(img);
//0.Animation qui devient transparente tout en augmentant à la taille d'origine en 3 secondes
        ViewCompat.animate(img)
                 .setDuration(300)
                 .alpha(0)
                 .scaleX(1)
                 .scaleY(1)
                 .setListener(new ViewPropertyAnimatorListener() {
                     @Override
                     public void onAnimationStart(View view) {
                     }
                     @Override
                     public void onAnimationEnd(View view) {
//Supprimé à la fin de l'animation
                         tapLayout.removeView(img);
                     }
                     @Override
                     public void onAnimationCancel(View view) {
                     }
                 }).start();
               
        return super.onTouchEvent(event);
    }
Mais avec cela, lorsque vous appuyez dessus, l'effet sort et ce n'est pas cool. .. .. De plus, même si vous bougez votre doigt tout en touchant l'écran, cela ne suit pas. De plus, si vous souhaitez mettre un effet sur l'écran, appuyez sur tout au long de l'application, vous ne pouvez pas le décrire dans toutes les activités, vous souhaitez donc implémenter chaque écran avec une activité qui en hérite.
Ce qui suit est l'accomplissement de toute telle cupidité.
1.TapActivity.java
public class TapActivity extends Activity {
//Définir ViewGroup
    ViewGroup viewGroup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
//Préparer une méthode pour recevoir ViewGroup
    public void setViewGroup(ViewGroup vg){
        viewGroup = vg;
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        float pointX = event.getX();
        float pointY = event.getY();
        float dp = getResources().getDisplayMetrics().density;
        int imgSize = (int)(50 * dp);
//Action de branche avec instruction switch
        switch (event.getAction()){
//Lorsque vous appuyez sur l'écran
            case MotionEvent.ACTION_DOWN:
                break;
//Lorsque votre doigt est hors de l'écran
            case MotionEvent.ACTION_UP:
                final ImageView img = new ImageView(getApplicationContext());
                img.setImageResource(R.drawable.Marquer l'image);
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(imgSize, imgSize);
                img.setLayoutParams(params);
                img.setX(pointX-imgSize/2);
                img.setY(pointY-imgSize/2);
                img.setScaleType(ImageView.ScaleType.FIT_XY);
                img.setScaleX(0.5f);
                img.setScaleY(0.5F);
                viewGroup.addView(img);
                ViewCompat.animate(img)
                        .setDuration(300)
                        .alpha(0)
                        .scaleX(1)
                        .scaleY(1)
                        .setListener(new ViewPropertyAnimatorListener() {
                            @Override
                            public void onAnimationStart(View view) {
                            }
                            @Override
                            public void onAnimationEnd(View view) {
                                viewGroup.removeView(img);
                            }
                            @Override
                            public void onAnimationCancel(View view) {
                            }
                        }).start();
                break;
//Lorsque vous bougez votre doigt tout en touchant l'écran
            case MotionEvent.ACTION_MOVE:
                final ImageView img2 = new ImageView(getApplicationContext());
                img2.setImageResource(R.drawable.Marquer l'image);
                LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(imgSize, imgSize);
                img2.setLayoutParams(params2);
                img2.setX(pointX-imgSize/2);
                img2.setY(pointY-imgSize/2);
                img2.setScaleType(ImageView.ScaleType.FIT_XY);
                viewGroup.addView(img2);
//0.Animation qui devient transparente en se rétrécissant en 3 secondes
                ViewCompat.animate(img2)
                        .setDuration(300)
                        .alpha(0)
                        .scaleX(0.01f)
                        .scaleY(0.01f)
                        .setListener(new ViewPropertyAnimatorListener() {
                            @Override
                            public void onAnimationStart(View view) {
                            }
                            @Override
                            public void onAnimationEnd(View view) {
                                viewGroup.removeView(img2);
                            }
                            @Override
                            public void onAnimationCancel(View view) {
                            }
                        }).start();
                break;
        }
        return super.onTouchEvent(event);
    }
}
2.MainActivity.java
//Hériter de TapActivity
public class MainActivity extends TapActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
   
//Passer ViewGroup avec l'ID donné dans le fichier xml
       setViewGroup((RelativeLayout)findViewById(R.id.mainLayout));
    }
}
Vous pouvez maintenant appuyer et vous déplacer pour suivre, et même si vous en héritez, cela fonctionnera. À propos, il ne semble y avoir aucun moyen d'obtenir le ViewGroup actuellement affiché sur Android, il était donc assez difficile d'en hériter et de dessiner l'effet. En fin de compte, j'ai pris la méthode non cool de faire passer l'appelant sur onCreate à chaque fois. .. ..
Si quelqu'un connaît un autre bon moyen, donnez-moi s'il vous plaît quelques conseils!