/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; /** * * @author sihai * */ public class OneUpTouchHandler extends ViewGroup { private View mActionBar; private View mBackground; private int mLocation[]; private View mScrollView; private View mTagView; private View mTargetView; public OneUpTouchHandler(Context context) { super(context); mLocation = new int[2]; } public OneUpTouchHandler(Context context, AttributeSet attributeset) { super(context, attributeset); mLocation = new int[2]; } public OneUpTouchHandler(Context context, AttributeSet attributeset, int i) { super(context, attributeset, i); mLocation = new int[2]; } public boolean dispatchTouchEvent(MotionEvent motionevent) { float f = motionevent.getRawX(); float f1 = motionevent.getRawY(); if(mTargetView == null && mScrollView != null && mScrollView.getVisibility() == 0) { View view1 = mScrollView.findViewById(0x102000a); view1.getLocationOnScreen(mLocation); if(f >= (float)mLocation[0] && f < (float)(mLocation[0] + view1.getWidth()) && f1 >= (float)mLocation[1] && f1 < (float)(mLocation[1] + view1.getHeight())) mTargetView = mScrollView; } if(mTargetView == null && mTagView != null && mTagView.getVisibility() == 0) { mTagView.getLocationOnScreen(mLocation); if(f >= (float)mLocation[0] && f < (float)(mLocation[0] + mTagView.getWidth()) && f1 >= (float)mLocation[1] && f1 < (float)(mLocation[1] + mTagView.getHeight())) mTargetView = mTagView; } if(mTargetView == null && mActionBar != null && mActionBar.getVisibility() == 0) { mActionBar.getLocationOnScreen(mLocation); if(f >= (float)mLocation[0] && f < (float)(mLocation[0] + mActionBar.getWidth()) && f1 >= (float)mLocation[1] && f1 < (float)(mLocation[1] + mActionBar.getHeight())) mTargetView = mActionBar; } if(mTargetView == null && mBackground != null) mTargetView = mBackground; if(mTargetView != null) { View view = mTargetView; int i = motionevent.getAction(); int j; if(i == 3) { motionevent.setAction(3); view.dispatchTouchEvent(motionevent); motionevent.setAction(i); } else { MotionEvent motionevent1 = MotionEvent.obtain(motionevent); motionevent1.offsetLocation(getScrollX() - view.getLeft(), getScrollY() - view.getTop()); view.dispatchTouchEvent(motionevent1); motionevent1.recycle(); } j = motionevent.getAction(); if(j == 3 || j == 1) mTargetView = null; } return true; } public final View getTargetView() { return mTargetView; } public boolean onInterceptTouchEvent(MotionEvent motionevent) { return true; } protected void onLayout(boolean flag, int i, int j, int k, int l) { } public boolean onTouchEvent(MotionEvent motionevent) { return true; } public void setActionBar(View view) { mActionBar = view; } public void setBackground(View view) { mBackground = view; } public void setScrollView(View view) { mScrollView = view; } public void setTagLayout(View view) { mTagView = view; } }