Он срабатывает дважды, потому что есть событие «вниз» и «вверх».
Код в ветви if всегда выполняется, поскольку действие установлено в 0 (что, кстати, является значением MotionEvent.ACTION_DOWN).
int action=0;
if(action == MotionEvent.ACTION_DOWN)
Может быть, вы хотели написать следующий код?
if(arg1.getAction() == MotionEvent.ACTION_DOWN)
Но вы действительно должны использовать OnClickListener, как предложил Вакас.