Skip to content

Commit

Permalink
Merge pull request by kevintanhongann: dont intercept when floating a…
Browse files Browse the repository at this point in the history
…ction button is clicked #88
  • Loading branch information
ksoichiro committed Mar 18, 2015
2 parents 63bc769 + 32c78d5 commit e26d6a6
Showing 1 changed file with 19 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.github.ksoichiro.android.observablescrollview.ObservableScrollViewCallbacks;
import com.github.ksoichiro.android.observablescrollview.ScrollState;
Expand Down Expand Up @@ -79,6 +80,12 @@ public abstract class SlidingUpBaseActivity<S extends Scrollable> extends BaseAc
private boolean mHeaderColorChangedToBottom;
private boolean mHeaderIsAtBottom;
private boolean mHeaderIsNotAtBottom;
private View.OnClickListener fabClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SlidingUpBaseActivity.this, "floating action button clicked", Toast.LENGTH_SHORT).show();
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -119,6 +126,7 @@ public void onClick(View v) {
mScrollable = createScrollable();

mFab = findViewById(R.id.fab);
mFab.setOnClickListener(fabClickListener);
mFabMargin = getResources().getDimensionPixelSize(R.dimen.margin_standard);

mInterceptionLayout = (TouchInterceptionFrameLayout) findViewById(R.id.scroll_wrapper);
Expand Down Expand Up @@ -179,8 +187,17 @@ public void onUpOrCancelMotionEvent(ScrollState scrollState) {
@Override
public boolean shouldInterceptTouchEvent(MotionEvent ev, boolean moving, float diffX, float diffY) {
final int minInterceptionLayoutY = -mIntersectionHeight;
return minInterceptionLayoutY < (int) ViewHelper.getY(mInterceptionLayout)
|| (moving && mScrollable.getCurrentScrollY() - diffY < 0);

//slight fix for untappable floating action button for larger screens
Rect fabRect = new Rect();
mFab.getHitRect(fabRect);
//if the user's touch is within the floating action button's touch area, dont intercept
if (fabRect.contains((int)ev.getX(), (int)ev.getY())) {
return false;
}else{
return minInterceptionLayoutY < (int) ViewHelper.getY(mInterceptionLayout)
|| (moving && mScrollable.getCurrentScrollY() - diffY < 0);
}
}

@Override
Expand Down

0 comments on commit e26d6a6

Please sign in to comment.