如何创建这样的自定义按钮?
它应该只是可点击区域而不是真正的按钮。
答案 0 :(得分:23)
我在我的应用程序上使用了一堆不规则形状的按钮,并且要更改按钮的“热区”或“可点击区域”,我只需使用Bitmap.getPixel()
方法检查所用图像的alpha值。如果方法返回0,则不执行click事件。
实施例:
(1)按照您的意愿,照常创建按钮。
(2)定义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;
}
event.getX()
和event.getY()
只是为您提供触摸按钮的位置坐标。
**以上示例旨在指导您正确的方向。有一些检查要添加到代码中以确保不会发生错误。
答案 1 :(得分:0)
使用您自己的画布停止或使用这样的photoshop制作图像,然后使用Bitmap.createScaledBitmap根据按钮的尺寸缩放它,因此您将获得此按钮。 使用canvas你必须编写更多代码才能正常工作
答案 2 :(得分:0)
只需创建一个类似的图片,您就可以使用ImageView
或Button
w / o文本,并实现OnClickListener
。它只是有效!
答案 3 :(得分:-1)
将其另存为png并将其放入drawables文件夹中。然后在你的xml中使用类似这样的东西
<Button
android:height="wrap_content"
android:width="wrap_content"
android:background="@drawable/your_png"
/>
我并非100%肯定裁员角落能够正常运作。那个消失的角落区域可能最终被点击。如果是这种情况,如果你不想这样,那么你将不得不将图片切成两半,创建两个按钮,你可以将它们彼此相邻设置以构成该形状并使用相同的点击监听器都。从用户的角度来看,它仍然看起来像一个按钮。