Как установить прослушиватель для растровых изображений на холсте в моем пользовательском представлении …?

#android #android-layout #android-widget

#Android #android-layout #android-виджет

Вопрос:

У меня есть пользовательский вид, в котором я рисую много растровых изображений,

Теперь я хочу изменить растровое изображение, когда пользователь нажимает на него.

Как это сделать …?

вот мой метод onDraw для пользовательского представления.

 public void onDraw(Canvas canvas) {

        super.onDraw(canvas);
        Bitmap mBitmap = null;

        int x = row * 20;
        int y = clm * 20;
        System.out.println("the x="   x   "y="   y);
        int counter = 0;
        for (int a = 0; a <= x; a  = 20)
            for (int b = 0; b <= y; b  = 20) {
                mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.test);
                canvas.drawBitmap(mBitmap, a, b, null);
                counter  ;
            }   
    }
  

Ответ №1:

Чтобы сделать более одного растрового изображения интерактивным, вам нужно будет использовать класс ViewGroup, поскольку OnClickListener реализован в представлении.

Обновить

Вы понимаете, что представления находятся внутри макетов. когда вы видите 5 кнопок на экране, это 5 представлений внутри Layout (ViewGroup). Добавляемые вами прослушиватели находятся в представлениях. Если у вас есть несколько растровых изображений, которые вы хотите щелкнуть, вам нужно создать как imageviews и добавить их в макет. Если вы хотите расположить их в определенном порядке, вам необходимо создать пользовательскую группу просмотра. В пользовательском представлении вы можете установить щелчок только для всего представления, а не для его частей. Может быть, вы можете переопределить событие просмотра onTouch и захватить координаты x, y касания и определить, какая часть нажата с помощью множества вычислений. Но это большой взлом, и view group — естественный способ ведения дел.

Комментарии:

1. Вам нужно поместить свои растровые изображения в imageviews, а затем поместить imageviews в макет (ViewGroup). Затем прослушиватели устанавливаются на imageviews

2. в моем пользовательском представлении нет макета.

Ответ №2:

 View.SetOnClickListner() 
  

работает для любого представления, просто замените View на ваш CustomView здесь. вы получаете доступ к представлению, на котором произошел щелчок. затем вы можете изменить растровое изображение вида.

Комментарии:

1. Он работает на всем пользовательском представлении, но в моем пользовательском представлении много растровых изображений… Я хочу прослушивать каждое растровое изображение.