Android:创建异形按钮

标签 android button touch

如何创建这样的自定义按钮?

enter image description here

它应该只是可点击区域而不是真正的按钮。

最佳答案

我在我的应用程序中使用了大量不规则形状的按钮,要更改按钮的“热区”或“可点击区域”,我只需使用 Bitmap.getPixel() 方法来检查所用图像的 alpha。如果该方法返回0,则不执行点击事件。

例子: (1) 按照您喜欢的任何方式,像往常一样创建您的按钮。 (2) 定义一个Bitmap 并为其分配用于按钮的相同图像drawable。 (3) 获取触摸或点击 Action 的X、Y坐标。 (4) 将坐标传递给 .getPixel(x,y) 方法。

示例代码:

// ** Declare your Bitmap somewhere **
final Bitmap TheBitmap;       
TheBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.TheImage);

// ** My onTouch code **
public boolean onTouch(View v, MotionEvent event) {

        int eventPadTouch = event.getAction();

        switch (eventPadTouch) {

            case MotionEvent.ACTION_DOWN:
                if (iX>=0 & iY>=0 & iX<TheBitmap.getWidth() & iY<TheBitmap.getHeight()) { // ** Makes sure that X and Y are not less than 0, and no more than the height and width of the image.                
                    if (TheBitmap.getPixel(iX,iY)!=0) {
                        // * A non-alpha area was clicked, do something 
                    }               
                }
                return true;                
        }           
        return false;
}

event.getX()event.getY() 只是为您提供触摸按钮位置的坐标。

** 上面的示例是为了引导您朝着正确的方向前进。有一些检查要添加到代码中以确保没有错误发生。

关于Android:创建异形按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778279/

相关文章:

css - 文本和按钮的响应式垂直对齐

html - Bootstrap 导航栏按钮有效,但按钮本身不显示

javascript - 检测用户的 Intent 是点击还是在触觉设备上向上/向下滚动页面

java - 如何向应用程序添加 onTouchEvent?

c# - 如何在负索引处启动数组 C#(UNITY)

android - 按后退按钮退出应用程序,而不是在 WebView 中向后导航

android - 在 Glide-4 中找不到 GlideDrawableImageViewTarget

android - 工具栏不显示溢出菜单

jquery - 从嵌入式按钮单击获取选定的项目

audio - sencha Touch中的音频