【发布时间】:2011-10-15 14:04:47
【问题描述】:
如何创建这样的自定义按钮?
它应该只是可点击区域而不是真正的按钮。
【问题讨论】:
如何创建这样的自定义按钮?
它应该只是可点击区域而不是真正的按钮。
【问题讨论】:
我在我的应用程序上使用了大量不规则形状的按钮,为了更改按钮的“热区”或“可点击区域”,我只使用Bitmap.getPixel() 方法来检查所用图像的 alpha。如果方法返回0,则不执行点击事件。
示例:
(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() 只是为您提供您触摸按钮的位置的坐标。
** 上面的示例是为了指导您正确的方向。有一些检查要添加到代码中,以确保不会发生错误。
【讨论】:
使用您自己的画布或像这样使用 Photoshop 制作图像,然后使用 Bitmap.createScaledBitmap 根据按钮的尺寸对其进行缩放,因此您将获得此按钮。 使用画布,您必须编写更多代码,这样做就可以正常工作
【讨论】:
只需创建一个这样的图像,您就可以使用ImageView 或Button 不带文本,并实现OnClickListener。它只是工作!
【讨论】:
将其保存为 png 并将其放入您的 drawables 文件夹中。然后在你的 xml 中使用类似这样的东西
<Button
android:height="wrap_content"
android:width="wrap_content"
android:background="@drawable/your_png"
/>
我不是 100% 肯定切角会正常工作。消失的那个角落区域最终可能是可点击的。如果是这种情况并且如果您不希望这样,那么您必须在某处将图片切成两半创建两个按钮,您可以将它们设置为彼此相邻以构成该形状并使用相同的点击侦听器两个都。从用户的角度来看,它仍然看起来像一个按钮。
【讨论】: