Как добавить строку в качестве жестов при перемещении с одного изображения на другое?

Я делаю свой собственный Pattern Lock для Android-телефона, я сделал Кодирование, как когда я нажимаю на изображение, он хранит целое число в массиве, и когда пользователь повторно вводит один и тот же пароль, он соответствует как массивам, так и Open блокировка соответственно, мой код работает нормально Но теперь я должен добавить жест в виде строки, переходя от одного изображения к другому (как в случае блокировки шаблона), также я хочу сохранить целые числа в массиве, когда я касаюсь изображения вместо того, чтобы щелкнуть его...

подскажите мне, как это сделать ниже, это мой пример кода для событий клика изображения.

public void Image1(View view) {
            // Toast.makeText(this, "You clicked Image 1!",
            // Toast.LENGTH_SHORT).show();
            myArray[0] = 1;
            // builder.append("" + myArray[0] + " ");
            // Toast.makeText(this, myArray, Toast.LENGTH_LONG).show();
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);

        }

        public void Image2(View view) {
            // Toast.makeText(this, "You clicked Image 2!",
            // Toast.LENGTH_SHORT).show();
            myArray[1] = 2;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

        public void Image3(View view) {
            // Toast.makeText(this, "You clicked Image 3!",
            // Toast.LENGTH_SHORT).show();
            myArray[2] = 3;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

        public void Image4(View view) {
            // Toast.makeText(this, "You clicked Image 4!",
            // Toast.LENGTH_SHORT).show();
            myArray[3] = 4;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

        public void Image5(View view) {
            // Toast.makeText(this, "You clicked Image 5!",
            // Toast.LENGTH_SHORT).show();
            myArray[4] = 5;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

        public void Image6(View view) {
            // Toast.makeText(this, "You clicked Image 6!",
            // Toast.LENGTH_SHORT).show();
            myArray[5] = 6;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

        public void Image7(View view) {
            // Toast.makeText(this, "You clicked Image 7!",
            // Toast.LENGTH_SHORT).show();
            myArray[6] = 7;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

        public void Image8(View view) {
            // Toast.makeText(this, "You clicked Image 8!",
            // Toast.LENGTH_SHORT).show();
            myArray[7] = 8;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

        public void Image9(View view) {
            // Toast.makeText(this, "You clicked Image 9!",
            // Toast.LENGTH_SHORT).show();
            myArray[8] = 9;
            ImageView kk = (ImageView) view;
            Drawable d = getResources().getDrawable(R.drawable.unlock);
            kk.setImageDrawable(d);
        }

Ответ 1

Внедрите onTouchEvent(MotionEvent ev) с помощью ACTION_DOWN, ACTION_MOVE, ACTION_UP. По мере продвижения пальца нарисуйте линию от предыдущей Координаты до текущей Координаты.
Получить координату с помощью ev.getX() ev.getY()
Я только что подумал о двух решениях:

  • При обнаружении события касания в ACTION_DOWN нарисуйте прозрачный VIEW поверх родительского представления, сделайте его Canvas и нарисуйте до тех пор, пока ACTION_MOVE находится в процессе обработки.

  • Используйте SurfaceView вместо обычного вида. Образец на SurfaceView для рисования: http://www.droidnova.com/playing-with-graphics-in-android-part-ii,160.html