Android 如何點擊異形按鈕

需求如下:

設計一個類似電視遙控器的界面,需要有弧形或其他多邊異形按鈕

 

解答:

我們知道在電腦中所有圖片全部都是矩形的….可能大傢並沒有註意到這個問題,據說是因為顯示器都是矩形的。

基於這樣一個條件,我們就知道想要做出異形圖片是不可能的。這樣明確瞭一點:即所有異形圖片也都是異形圖+透明區構成的。

 

那如何實現點擊異形圖才有效果,點擊透明區域無效果呢?

我們這樣實現:

 

public static class PassThroughButton extends Button {  
  
        private Bitmap mBitmap;  
  
        public PassThroughButton(Context context, AttributeSet attrs) {  
            super(context, attrs);  
        }  
  
        @Override  
        public boolean onTouchEvent(MotionEvent event) {  
            if (event.getAction() == MotionEvent.ACTION_DOWN) {  
                int color = mBitmap.getPixel((int) event.getX(),  
                        (int) event.getY());  
                if (color == 0) {  
                    return false;  
                }  
            }  
            return super.onTouchEvent(event);  
        }  
  
        @Override  
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {  
            if (w == 0 && h == 0 && oldw == 0 && oldh == 0) {  
                super.onSizeChanged(w, h, oldw, oldh);  
            } else {  
                final StateListDrawable bkg = (StateListDrawable) getBackground();  
                mBitmap = Bitmap.createScaledBitmap(  
                        ((BitmapDrawable) bkg.getCurrent()).getBitmap(),  
                        getWidth(), getHeight(), true);  
            }  
        }  
  
    }  

 

自定義一個Button,重寫其onTouch事件,按下的時候獲取當前點的像素,如果有值就繼續傳遞事件,如果是透明區域就攔截事件。

 

發佈留言