package me.ccrama.redditslide.ForceTouch;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
import me.ccrama.redditslide.R;
import me.ccrama.redditslide.Reddit;
public class PeekViewActivity extends AppCompatActivity {
private PeekView peekView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onPause() {
super.onPause();
removePeek(null);
}
float origY;
int twelve = Reddit.dpToPxVertical(12);
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (peekView != null && event.getAction() == MotionEvent.ACTION_UP) {
if(Reddit.peek){
peekView.pop();
peekView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
Reddit.peek = false;
}
// the user lifted their finger, so we are going to remove the peek view
removePeek(event);
return false;
} else if (peekView != null) {
// peekView.doScroll(event);
peekView.highlightMenu(event);
View peek = peekView.content.findViewById(R.id.peek);
RelativeLayout.LayoutParams params =
(RelativeLayout.LayoutParams) peek.getLayoutParams();
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
params.topMargin = (int) -((origY - event.getY()) / 5);
if( false && event.getY() < (2* origY) / 3) {
params.leftMargin = twelve - (int) ((origY - event.getY())) / 2;
params.rightMargin = twelve -(int)((origY - event.getY()) ) / 2;
} else {
params.leftMargin = twelve;
params.rightMargin = twelve;
}
if (event.getY() < (origY) / 2 && !Reddit.peek) {
peekView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
Reddit.peek = true;
} else if(event.getY() > (origY) / 2){
Reddit.peek = false;
}
peek.setLayoutParams(params);
break;
}
// we don't want to pass along the touch event or else it will just scroll under the PeekView
return false;
} else if (event.getAction() == MotionEvent.ACTION_MOVE && Reddit.peek) {
return false;
}
return super.dispatchTouchEvent(event);
}
public boolean isPeeking() {
return isPeeking;
}
public boolean isPeeking;
public void showPeek(final PeekView view, float origY) {
isPeeking = true;
peekView = view;
peekView.show();
this.origY = origY;
}
public void removePeek(MotionEvent event) {
isPeeking = false;
if (peekView != null) {
if (event != null) peekView.checkButtons(event);
peekView.hide();
peekView = null;
}
}
}