Android touchevent нужна помощь/предложение по сценарию

Теперь у меня есть ImageView и его круг, который находится чуть ниже центрального положения (но это не имеет значения).

Я написал код на Touch of ImageView для ACTION_DOWN, ACTION_UP, теперь рассмотрим, как пользователь положил палец на круг и двигался и двигался.... Я хочу активировать некоторый код, когда пользователь перемещает палец и превышает область изображения CIRCLE (как только пользователь превышает регион, код должен выполняться только один раз)

Вот мой код

ImageView view1 = (ImageView) findViewById(R.id.fccircledetectionarea);

      view1.setOnTouchListener(new OnTouchListener()
      {

        @Override
        public boolean onTouch(View v, MotionEvent event) 
        {
            ImageView imageView=(ImageView) findViewById(R.id.fccircledetectionarea);
            switch(event.getAction())
            {
            case MotionEvent.ACTION_DOWN:
                final float x=imageView.getTop();


                Toast.makeText(PlayScreen.this, "Top Position:"+x, Toast.LENGTH_SHORT).show();
                break;
            case MotionEvent.ACTION_UP:
                Toast.makeText(PlayScreen.this, "Over", Toast.LENGTH_SHORT).show();
                break;

            case MotionEvent.ACTION_MOVE:


                Toast.makeText(PlayScreen.this, "Over", Toast.LENGTH_SHORT).show();
                break;

            }
            return true;
        }
    });

Я не могу заархивировать свою цель через ACTION_MOVE: она начинает работать, если пользователь двигает пальцем в пределах круга

И мой второй вопрос заключается в том, как установить альфу этого изображения, которое я использовал

view1.setAlpha(0);

Но не работает, и я также сделал это изображение невидимым, но мой код onTouch не работает


person Devon Smith    schedule 13.07.2011    source источник


Ответы (1)


В вашем методе onTouch запишите логическое значение, чтобы проверить, касается ли пользователь границ круга.

boolean inCircle = java.lang.Math.sqrt(x*x + y*y) <= circleRadius

Где x берется из event.getX() - circleCenterX, а y берется из event.getY() - circleCenterY (смещение позиции касания от центра круга)

person Che Jami    schedule 13.07.2011
comment
но круг - это изображение, которое я не рисовал вручную... Как получить центр изображения - person Devon Smith; 13.07.2011
comment
Вы можете взять ширину и высоту ImageView и половину их. - person Che Jami; 13.07.2011
comment
спасибо за быстрый ответ, но не могли бы вы объяснить, как,,, boolean inCenter = java.lang.Math.sqrt(xx + yy) --›работает - person Devon Smith; 13.07.2011
comment
принимая центр круга за начало координат, это дает вам расстояние точки от центра, и если оно меньше или равно радиусу круга, то оно должно быть внутри круга. - person Che Jami; 13.07.2011
comment
хорошо, большое спасибо, я сделал на бумаге, и кажется, что ваш трюк сработает для меня .... завтра я реализую его и дам вам знать, большое спасибо!!!!! - person Devon Smith; 13.07.2011
comment
Я не могу реализовать что-то вроде «if (touch › imageView.getHeight() или imageView.getWidth())» {мой код} что-то вроде этого - person Devon Smith; 14.07.2011
comment
Зависит от того, хотите ли вы, чтобы поведение было внутри ImageView или внутри круга внутри ImageView. Вам также может понадобиться создать собственный ImageView и переопределить метод onSizeChanged, чтобы получить размеры. - person Che Jami; 14.07.2011
comment
Да, если вы распечатаете imageView.getHeight() или imageView.getWidth() в onCreate, он не вернет то, что вы хотите. Вам нужно будет создать собственное представление + переопределить метод onSizeChanged. - person Che Jami; 14.07.2011
comment
Я сделал, как вы сказали, и для поиска центра я использовал int[] location = new int[2]; imageView.getLocationOnScreen(location); int radius=imageView.getHeight()/2; int[] center=new int[2]; center[0]=location[0]+radius; center[1]=location[1]+radius; , но я не получаю желаемого результата. Я что-то делаю неправильно... - person Devon Smith; 14.07.2011
comment
: Размер моего изображения такой же, как и круг, который он содержит, и ... Ваше предложение работает на бумаге, и оно должно работать при реализации, почему оно не работает, я не понимаю ------ я делаю неправильно в найти центр окружности???? - person Devon Smith; 15.07.2011
comment
Или я могу сделать что-то вроде ---› палец превышает размер изображения (часть изображения) и реализовать мой код ACTION_MOVE - person Devon Smith; 15.07.2011
comment
Да, вы можете, но это больше не будет круглой областью. - person Che Jami; 15.07.2011
comment
как мне это сделать подскажите пожалуйста??? и любым оптимальным способом я хочу достичь своей цели, так какой путь будет лучше всего сделать и как я могу это реализовать - person Devon Smith; 15.07.2011