簡體   English   中英

自定義ImageButton視圖

[英]Custom ImageButton View

我做了一個形狀怪異的自定義按鈕,所以我覆蓋了`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 MotionEvent.ACTION_UP (event.getAction() == (MotionEvent.ACTION_UP) else blcock中,因為它多次調用了意圖。

您從onTouch(View v, MotionEvent event)方法返回true ,這是在告訴系統您正在處理所有觸摸事件,如果要檢測單擊事件,請在onTouch方法中返回false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM