0

奇妙な形のカスタム ボタンを作成したので、`dispatchTouchEvent. 次に、onTouch リスナーを追加して、タッチすると画像が変化するようにしました。onClick 属性が機能しなくなったので、onClick リスナーを追加しました。現在、onClick リスナーも onClick 属性も起動していません 理由を知っている人はいますか? 私はこれを解決できないようです。

これはカスタム ビューです。

@Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        double iX = (double) event.getX();
        double iY = (double) event.getY();
        String isLeft = (String) getContentDescription();
        double Ymax;
        if(isLeft.equals("left"))
            Ymax = Math.sqrt((this.getWidth()*getWidth()) - ((getWidth() - iX)*(getWidth() - iX)) + (getHeight()*1.2));
        else
            Ymax = Math.sqrt((this.getWidth()*getWidth()) - ((iX)*(iX)) + (getHeight()*1.2));

            if (!(iY>Ymax || iY<0.0 || iX>getWidth() || iX<0.0)) {
                return false;
            }
        return super.dispatchTouchEvent(event);
    }

mainActivity onCreate では:

final CornerButton LeftCornerButton = (CornerButton) findViewById(R.id.LeftButton);
    LeftCornerButton.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if(event.getAction() == (MotionEvent.ACTION_UP)){
                LeftCornerButton.setBackgroundResource(R.drawable.cornerleft);
            }
            else{
                LeftCornerButton.setBackgroundResource(R.drawable.cornerleftdark);
            }
            return true;
        }
    });
    LeftCornerButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            showEvents(v);
        }
    });

タッチ検出は完璧に機能し、画像の反転もうまく機能します。(event.getAction() == (MotionEvent.ACTION_UP) elseインテントを複数回呼び出すため、ブロックにクリック操作を入れることができません。

4

1 に答える 1