Android 圆形按钮 判断点击的位置 显示不同的区域
程序员文章站
2022-05-31 13:54:38
...
公司开发项目 一个圆形的按钮 点击不同区域不同的作用,以为控件是长方形的 简单的拼接会有问题 所以通过坐标来判断点击的位置 阴影处即为点击区域 将圆均分为四块
public class CircleMenuImageView extends ImageView {
private CircleCallback circleCallback;
public CircleMenuImageView(Context context) {
super(context);
}
public CircleMenuImageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CircleMenuImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
float x = event.getX();
float y = event.getY();
int area = 0;
if (x < getWidth() / 2 && y < getHeight() / 2) {
if (x > y) {
area = 1;
} else {
area = 4;
}
}
else if (x > getWidth() / 2 && y < getHeight() / 2) {
if (getWidth()-x > y) {
area = 1;
} else {
area = 2;
}
} else if (x < getWidth() / 2 && y > getHeight() / 2) {
if (getWidth()- y > x) {
area = 4;
} else {
area = 3;
}
} else if (x > getWidth() / 2 && y > getHeight() / 2) {
if (x > y) {
area = 2;
} else {
area = 3;
}
}
Log.d("TTT", x + "-" + y);
circleCallback.onAreaClick(area);
break;
case MotionEvent.ACTION_UP:
circleCallback.onAreaFinish();
break;
default:
return false;
}
return true;
}
public void setCircleCallback(CircleCallback circleCallback) {
this.circleCallback = circleCallback;
}
}
完整代码连接:
https://download.csdn.net/download/weixin_36002948/10563535
上一篇: 女人便秘影响更深重 教你排便清毒调理身体
下一篇: 气功养生:气功怎么练能长寿