Android:创建形状按钮

xpe*_*int 6 android button touch

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

在此输入图像描述

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

JJT*_*JJT 23

我在我的应用程序上使用了一堆不规则形状的按钮,并且要更改按钮的"热区"或"可点击区域",我只是使用该Bitmap.getPixel()方法检查所用图像上的alpha.如果方法返回0,则不执行单击事件.

示例: (1)照常创建按钮,无论您希望采用哪种方式. (2)定义a Bitmap并为其分配用于按钮的相同图像. (3)获取触摸或点击动作的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;
}
Run Code Online (Sandbox Code Playgroud)

在event.getX()与event.getY()简单地给你,你触动按钮的坐标.

**以上示例旨在指导您正确的方向.有一些检查要添加到代码中以确保不会发生错误.


Foa*_*Guy -2

将其另存为 png 并将其放入您的可绘制文件夹中。然后在你的xml中使用这样的东西

<Button
android:height="wrap_content"
android:width="wrap_content"
android:background="@drawable/your_png"
/>
Run Code Online (Sandbox Code Playgroud)

我并不 100% 确信切角能够正常工作。消失的角落区域最终可能是可点击的。如果是这种情况,并且您不希望出现这种情况,那么您必须在某处将图片切成两半,创建两个按钮,您可以将它们设置为彼此相邻以组成该形状,并使用相同的单击侦听器两个都。从用户的角度来看,它仍然看起来像一个按钮。