最近跟同事在討論明星臉改版的問題,新版本可能會使用不規則形狀按鈕,繼續跟上一個視覺合作,新版本照照明星臉搭配上這種按鈕顯得更活潑,這篇記錄ImageButton不規則形狀按鈕的使用方法。

上網查了一下該怎麼處理,發現其實並不難,而且只要下關鍵字「不規則形狀 ImageButton」就可以找到非常多的資料,小蛙在這邊記錄一下剛剛測試的,之後如果有什麼其他修改會繼續補充在這邊。
一開始聽到ImageButton要做成不規則形狀好像很困難,網路上找到的做法大多如下:首先我們先建立一個ImageButton,在layou.xml中透過android:background=”#00000000”把背景設定成透明,之後在程式中取得ImageButton的Bitmap元件,在Bitmap上設定OnTouchListener監控觸控事件,當觸控事件發生後再判斷所擊點的座標上有沒有pixel存在,並做相對應的處理。程式碼如下:

ImageButton img = (ImageButton)findViewById(R.id.imageButton1);
// 取得ImageButton中使用的Bitmap
final Bitmap bitmap = ((BitmapDrawable)(img.getDrawable())).getBitmap();
// 設定觸控螢幕監聽
img.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // 如果點到的地方getPixel() = 0,表示該點不在圖形內
        f(bitmap.getPixel((int)(event.getX()),((int)event.getY()))==0){
            Log.e("沒有點到", "NO");
        }else{
            Log.e("點到圖片", "Yes");
        }
        return false;
    }
});

這邊可以再設定一個flag去控制touch(click)只執行一次(避免同個動作會重複多次,從LogCat中就可以看到)。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *