Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > навесить событие на круг


Автор: Samotnik 16.8.2014, 17:29
Привет! 
Есть круг smile Как на него повесит событие нажатия? 
Код

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        CrazyEightsView ev = new CrazyEightsView(this);

        setContentView(ev);
    }

    public class CrazyEightsView extends View {

        private Paint redPaint;
        private int circleX;
        private int circleY;
        private float radius;

        public CrazyEightsView(Context context) {
            super(context);
            redPaint = new Paint();
            redPaint.setAntiAlias(true);
            redPaint.setColor(Color.rgb(99, 0, 0));
            circleX = 100;
            circleY = 100;
            radius = 30;

        }

        @Override
        public void onDraw(Canvas canvas) {
            canvas.drawCircle(circleX, circleY, radius, redPaint);
        }
    }

}

Автор: diadiavova 16.8.2014, 21:37
Цитата(Samotnik @  16.8.2014,  18:29 Найти цитируемый пост)
Как на него повесит событие нажатия? 

Да так же, как и на любую другую вьюху
Код

        ev.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // Здесь код обработки
                

            }
        });
 Не?  smile 

Автор: Samotnik 17.8.2014, 17:28
у PAint нет такого метода

Автор: diadiavova 17.8.2014, 17:47
Samotnik, у какого ещё пэйнт? Ты создал класс, наследующий View  и пытаешься привязать обработчик кликов к его экземпляру. Если это так, то метод setOnClickListener у него должен быть, поскольку наследуется от View. Если делаешь что-то другое, то объясни что, поскольку класс Paint просто хранит информацию о стиле и кликнуть по нему нельзя.

Автор: igorka 26.8.2014, 00:33
Если надо отслеживать клик на по всему View, а только по определенной зоне, можно использовать
  setOnTouchListener(View.OnTouchListener l)

и в onTouch(View v, MotionEvent event)

проверять входят ли event.getX() и event.getY() в заданый круг

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)