package info.guardianproject.securereaderinterface; import android.os.Bundle; import android.os.Handler; import android.view.GestureDetector; import android.view.MotionEvent; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.Window; import info.guardianproject.securereaderinterface.R; import com.tinymission.rss.MediaContent; public class ViewMediaActivity extends FragmentActivityWithMenu // implements // OnTouchListener { private static int ACTION_BAR_SHOW_DELAY = 2500; // How long to show the // action bar until it // does away private Handler mHandler; @Override protected boolean useLeftSideMenu() { return false; } @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); super.onCreate(savedInstanceState); this.setDisplayHomeAsUp(true); mHandler = new Handler(); setContentView(R.layout.activity_view_media); setMenuIdentifier(R.menu.activity_view_media); // Send the URI along to the fragment, so we know what to show! // try { ViewMediaFragment fragment = (ViewMediaFragment) this.getSupportFragmentManager().findFragmentById(R.id.view_media_fragment); if (fragment != null) { Bundle parameters = this.getIntent().getBundleExtra("parameters"); if (parameters != null) { MediaContent mediaContent = (MediaContent) parameters.getSerializable("media"); fragment.setMediaContent(mediaContent); } } } catch (Exception ex) { } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } private final Runnable hideActionBarRunnable = new Runnable() { @Override public void run() { hideActionBar(); } }; private GestureDetector mGestureDetector; public void showActionBar() { mHandler.removeCallbacks(hideActionBarRunnable); getSupportActionBar().show(); mHandler.postDelayed(hideActionBarRunnable, ACTION_BAR_SHOW_DELAY); } public void hideActionBar() { getSupportActionBar().hide(); } @Override protected void onResume() { super.onResume(); createGestureDetector(); showActionBar(); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mGestureDetector != null) { mGestureDetector.onTouchEvent(ev); } return super.dispatchTouchEvent(ev); } public void createGestureDetector() { if (mGestureDetector == null) { mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { private static final int SWIPE_MIN_DISTANCE = 40; private static final int SWIPE_MAX_OFF_PATH = 20; @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { try { if (Math.abs(e1.getX() - e2.getX()) > SWIPE_MAX_OFF_PATH) return false; // bottom to up swipe // if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE) // { // finish(); // return true; // } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE) { showActionBar(); return true; } } catch (Exception e) { // nothing } return false; } }); } } @Override protected void onWipe() { super.onWipe(); finish(); } }