I have created/tried to create, a round button for android by using the ImageButton \"widget\". But since that type of button is treated as a square and my png-image also is
I was using an ImageView as my circle button, and I needed to make some changes to @Daniel's code to make it work the way I wanted. Here's my code:
private boolean mStillDown = false;
public boolean inCircle(MotionEvent e, float radius, float x, float y) {
float dx = e.getX() - x;
float dy = e.getY() - y;
double d = Math.sqrt((dx * dx) + (dy * dy));
if(d < radius)
return true;
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
boolean inCircle = inCircle(event, getWidth()/2.0f, getWidth()/2.0f, getHeight()/2.0f);
if(inCircle){
if(action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN){
this.setPressed(true);
mStillDown = true;
}else if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP){
if(this.isPressed()){
this.performClick();
this.setPressed(false);
mStillDown = false;
}
}else if(action == MotionEvent.ACTION_MOVE && mStillDown){
this.setPressed(true);
}
}else{
if(action == MotionEvent.ACTION_MOVE){
this.setPressed(false);
}else if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_OUTSIDE){
mStillDown = false;
}
}
return true;
}
Hopefully this is useful to someone.