Cus*_*ian 3 android button relativelayout android-layout android-linearlayout
我是android的新手.我想在android中创建自己的自定义按钮;我用来创建自定义按钮的方法是; 1.在绘画中随意绘制一个简单的图像,然后转到可绘制的资源,然后粘贴该图像.从那里,我们可以将这些图像用作按钮.假设我的图像是这样的,
我做了这个图像的其余部分,不包括绿色透明,所以我只会使绿色区域可触摸,为此我使用此代码,
Bitmap TheBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.green);
int eventPadTouch = event.getAction();
int iX = (int) event.getX();
int iY = (int) event.getY();
int[] location = new int[2];
v.getLocationOnScreen(location);
int viewX = location[0];
int viewY = location[1];
switch (eventPadTouch) {
case MotionEvent.ACTION_DOWN:
if (iX>=viewX & iY>=viewY & iX<=(viewX+TheBitmap.getWidth()) & iY<=(viewY+TheBitmap.getHeight())) {
if (TheBitmap.getPixel(iX,iY)!=0) {
Intent intent = new Intent(this, NewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
showPressedState();
return false;
}
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
showNormalState();
break;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是当我像这样制作这个图像时,
我面临的问题是,图像中的曲线部分下方可再次触摸,但我使其不可触摸.当我转到下一个问题,如果我想创建这种按钮
我想将所有部分都用作按钮,以便我可以执行不同的活动,是否可能?
我发现这一切都在发生,因为android只提供有限类型的布局,如LINEAR LAYOUT,RELATIVE LAYOUT,WEBVIEW.那么,有没有办法定义我们自己的布局意味着我是否能够给出布局的boudries.
我的想法是,您手动检查按下的像素的颜色是什么,并基于此,您可以切换不同的触摸事件(不同颜色的情况).我认为没有更简单的方法来实现你想要实现的目标.
但是,如果您的图像由不同可点击区域中的渐变或相同颜色组成,该怎么办?请考虑以下示例:
正如你所看到的那样,有一个有4种不同颜色区域的图片,但每个区域还有很多白色像素吗?如果按钮背景不是纯色,但是例如由渐变等组成,那么你可以使它们中的每一个具有不同的transparency
值(255,254,253等),这些值是用户不会注意到的,但您可以轻松地区分它们在您按下的区域之间.
所以在onClick方法中:
//Not sure about below line
alpha = ((bitmap.getPixel((int)event.getX(), (int)event.getY())) >>> 24);
switch(alpha)
{
case 255:
//your code
break;
case 254:
//your code
break;
default:
//your code
break;
}
Run Code Online (Sandbox Code Playgroud)
另外,您可以考虑阅读:
归档时间: |
|
查看次数: |
1032 次 |
最近记录: |