http://www.showmycode.com/ 反汇编apk代码时的有时候switch语句会出现以下情况,对于这段代码可以自己解析如下:
public boolean onTouchEvent(MotionEvent motionevent)
{
motionevent.getAction();
// 这里对应一个switch语句,该switch有四种情况,分别是0,1,2,以及default四个case分支
// case 0 和 default 都 跳转到_L1执行;
// case 1 跳转到_L2执行;
// case 2 跳转到_L3执行;
JVM INSTR tableswitch 0 2: default 32
// 0 32
// 1 56
// 2 34;
goto _L1 _L1 _L2 _L3
_L1:
return true;
_L3:
if(!isMove)
{
startX = motionevent.getX();
isMove = true;
return true;
}
goto _L1
_L2:
int i = getScreenWidth();
float f = motionevent.getX() - startX;
if(Math.abs(f) >= SNAPX)
{
if(!mScroller.isFinished())
mScroller.abortAnimation();
if(f > 0.0F)
{
mScroller.startScroll(getScrollX(), 0, -i, 0, (int)((float)Math.abs(-i) * snapDuration));
postInvalidate();
} else
{
mScroller.startScroll(getScrollX(), 0, i, 0, (int)((float)Math.abs(i) * snapDuration));
postInvalidate();
}
}
isMove = false;
return true;
}