Создание ImageButton неправильной формы с различными состояниями щелчка

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

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

Поэтому я реализовал OnTouchListener, который сверяет координаты события касания со значениями пикселей растрового изображения (как описано в первом ответе здесь: ссылка). Это работает с точки зрения логики, определяющей, была ли нажата кнопка, но теперь изображение кнопки больше не меняется на нажатое изображение.

Вот что у меня есть:

XML-файл селектора:



    
    

Частично прозрачный ImageButton в макете:


В действии:

public void onCreate(Bundle savedInstance) {
   super.onCreate(savedInstance);
   ...
   ImageButton startCallButton = (ImageButton) this.findViewById(R.id.dashboardStartCallButton);
   startCallButton.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return OnStartCallButtonTouch(v,event);
        }           
    });
}


public boolean OnStartCallButtonTouch(View v, MotionEvent event)
{
    Bitmap TheBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.button_start_call_normal);
    int eventPadTouch = event.getAction();
    int iX = (int) event.getX();
    int iY = (int) event.getY();
    switch (eventPadTouch) {
        case MotionEvent.ACTION_DOWN:
            if (iX>=0 & iY>=0 & iX

8
задан Community 23 May 2017 в 11:58
поделиться