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