package ch.spherIC.recurvebowsight; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.ScrollView; import android.widget.Spinner; import android.widget.ViewFlipper; import ch.spherIC.recurvebowsight.components.FontArrayAdapter; import ch.spherIC.recurvebowsight.components.XSpinner; import ch.spherIC.recurvebowsight.components.XTextView; import ch.spherIC.recurvebowsight.database.RBSDatabaseHelper; import java.util.ArrayList; import java.util.Arrays; public class RBSMainActivity extends Activity { private static final int MIN_DISTANCE = 50; private ViewFlipper viewFlipper; private ScrollView paramsScrollView; private ScrollView sightCfgScrollView; private float lastX; private ListView listView1; private XTextView txtViewParams; private XTextView txtViewResults; private XTextView txtViewSight; private Spinner calcTimeIntervalCboBox; private XSpinner calcAccuracyCboBox; private Activity riserSightConfigActivity; private boolean showInfoMenu; private Menu optionsMenu; @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rbs_main); RBSDatabaseHelper.setContext(this); RBSDatabaseHelper helper = RBSDatabaseHelper.getInstance(); helper.getWritableDatabase(); this.viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper); this.paramsScrollView = (ScrollView) findViewById(R.id.paramsScrollView); this.sightCfgScrollView = (ScrollView) findViewById(R.id.sightCfgScrollView); this.txtViewParams = (XTextView) findViewById(R.id.viewParams); this.txtViewResults = (XTextView) findViewById(R.id.viewResults); this.txtViewSight = (XTextView) findViewById(R.id.viewSight); this.calcTimeIntervalCboBox = (Spinner) findViewById(R.id.deltaTimeCboBox); this.calcAccuracyCboBox = (XSpinner) findViewById(R.id.calcPrecisionCboBox); // Scrollview muss den Swipe selbst handeln this.paramsScrollView.setOnTouchListener(new OnTouchListener() { private float downX, downY, upX, upY; @Override public boolean onTouch(final View v, final MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { this.downX = event.getX(); this.downY = event.getY(); } case MotionEvent.ACTION_UP: { this.upX = event.getX(); this.upY = event.getY(); float deltaX = this.upX - this.downX; float deltaY = this.upY - this.downY; // swipe from right to left ? if (deltaX < 0 && Math.abs(deltaX) > MIN_DISTANCE && Math.abs(deltaY) < MIN_DISTANCE) { // set the required Animation type to ViewFlipper // The Next screen will come in form Right and current Screen will go OUT to Left RBSMainActivity.this.viewFlipper.setInAnimation(RBSMainActivity.this, R.anim.in_from_right); RBSMainActivity.this.viewFlipper.setOutAnimation(RBSMainActivity.this, R.anim.out_to_left); // Show The Next Screen RBSMainActivity.this.viewFlipper.showNext(); deactivateXTextView(RBSMainActivity.this.txtViewParams); xTextViewUp(RBSMainActivity.this.txtViewResults); deactivateXTextView(RBSMainActivity.this.txtViewSight); } } } return false; } }); // Scrollview muss den Swipe selbst handeln this.sightCfgScrollView.setOnTouchListener(new OnTouchListener() { private float downX, downY, upX, upY; @Override public boolean onTouch(final View v, final MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { this.downX = event.getX(); this.downY = event.getY(); } case MotionEvent.ACTION_UP: { this.upX = event.getX(); this.upY = event.getY(); float deltaX = this.upX - this.downX; float deltaY = this.upY - this.downY; // swipe from left to right? if (deltaX > 0 && Math.abs(deltaX) > MIN_DISTANCE && Math.abs(deltaY) < MIN_DISTANCE) { // set the required Animation type to ViewFlipper // The Next screen will come in form Right and current Screen will go OUT to Left RBSMainActivity.this.viewFlipper.setInAnimation(RBSMainActivity.this, R.anim.in_from_left); RBSMainActivity.this.viewFlipper.setOutAnimation(RBSMainActivity.this, R.anim.out_to_right); // Show The Next Screen RBSMainActivity.this.viewFlipper.showPrevious(); deactivateXTextView(RBSMainActivity.this.txtViewSight); xTextViewUp(RBSMainActivity.this.txtViewResults); deactivateXTextView(RBSMainActivity.this.txtViewParams); } } } return false; } }); // Touchlistener für die oberen 3 Tabs OnTouchListener tabListener = new OnTouchListener() { @Override public boolean onTouch(final View v, final MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { deactivateXTextView(RBSMainActivity.this.txtViewParams); deactivateXTextView(RBSMainActivity.this.txtViewResults); deactivateXTextView(RBSMainActivity.this.txtViewSight); xTextViewDown((XTextView) v); return true; } case MotionEvent.ACTION_UP: { RBSMainActivity.this.viewFlipper.setInAnimation(RBSMainActivity.this, R.anim.in_from_right); RBSMainActivity.this.viewFlipper.setOutAnimation(RBSMainActivity.this, R.anim.out_to_left); if (v == RBSMainActivity.this.txtViewParams) { if (RBSMainActivity.this.viewFlipper.getDisplayedChild() != 0) { RBSMainActivity.this.viewFlipper.setDisplayedChild(0); } } else if (v == RBSMainActivity.this.txtViewResults) { if (RBSMainActivity.this.viewFlipper.getDisplayedChild() != 1) { RBSMainActivity.this.viewFlipper.setDisplayedChild(1); } } else { if (RBSMainActivity.this.viewFlipper.getDisplayedChild() != 2) { RBSMainActivity.this.viewFlipper.setDisplayedChild(2); } } xTextViewUp((XTextView) v); return true; } } return false; } }; // Touchlistener an Tabs anhängen this.txtViewParams.setOnTouchListener(tabListener); this.txtViewResults.setOnTouchListener(tabListener); this.txtViewSight.setOnTouchListener(tabListener); xTextViewUp(this.txtViewParams); this.calcTimeIntervalCboBox.setAdapter(new FontArrayAdapter(this, R.layout.rbs_spinner, getResources().getStringArray(R.array.CalculationTimeIntervals), this.calcTimeIntervalCboBox)); this.calcAccuracyCboBox.setAdapter(new FontArrayAdapter(this, R.layout.rbs_spinner, getResources().getStringArray(R.array.CalculationAccuracies), this.calcAccuracyCboBox)); // ************************************************************************ // ** TEST WEISE AB HIER*************************************************** // ************************************************************************ this.listView1 = (ListView) findViewById(R.id.listView1); String[] values = new String[] { "Riser", "Sight", "General Config" }; final ArrayList list = new ArrayList(Arrays.asList(values)); final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); this.listView1.setAdapter(adapter); this.listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(final AdapterView parent, final View view, final int position, final long id) { final String item = (String) parent.getItemAtPosition(position); if (item.equals("Riser")) { Intent intent = new Intent(RBSMainActivity.this, RiserSightConfigurationActivity.class); startActivity(intent); } } }); } @Override public boolean onPrepareOptionsMenu(Menu menu) { if (this.showInfoMenu) { this.showInfoMenu = false; getMenuInflater().inflate(R.menu.rbs_info_menu, menu); } else { getMenuInflater().inflate(R.menu.rbs_main, menu); } return super.onPrepareOptionsMenu(menu); } @Override public boolean onCreateOptionsMenu(final Menu menu) { // getMenuInflater().inflate(R.menu.rbs_main, menu); // getMenuInflater().inflate(R.menu.rbs_info_menu, menu.getItem(3).getSubMenu()); super.onCreateOptionsMenu(menu); this.optionsMenu = menu; return true; } @Override public void closeOptionsMenu() { for (int i = 0; i < this.optionsMenu.size(); i++) { this.optionsMenu.removeItem(i); } super.closeOptionsMenu(); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.moreItems) { this.showInfoMenu = true; closeOptionsMenu(); runOnUiThread(new Runnable() { @Override public void run() { openOptionsMenu(); } }); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onTouchEvent(final MotionEvent touchevent) { switch (touchevent.getAction()) { // when user first touches the screen to swap case MotionEvent.ACTION_DOWN: { this.lastX = touchevent.getX(); break; } case MotionEvent.ACTION_UP: { float currentX = touchevent.getX(); // if right to left swipe on screen if (this.lastX > currentX) { if (this.viewFlipper.getDisplayedChild() == 2) { break; } // set the required Animation type to ViewFlipper // The Next screen will come in form Right and current Screen will go OUT to Left this.viewFlipper.setInAnimation(this, R.anim.in_from_right); this.viewFlipper.setOutAnimation(this, R.anim.out_to_left); // Show The Next Screen this.viewFlipper.showNext(); } else if (this.lastX < currentX) { // if left to right swipe on screen // If no more View/Child to flip if (this.viewFlipper.getDisplayedChild() == 0) { break; } // set the required Animation type to ViewFlipper // The Next screen will come in form Left and current Screen will go OUT to Right this.viewFlipper.setInAnimation(this, R.anim.in_from_left); this.viewFlipper.setOutAnimation(this, R.anim.out_to_right); // Show the previous Screen this.viewFlipper.showPrevious(); } deactivateXTextView(RBSMainActivity.this.txtViewParams); deactivateXTextView(RBSMainActivity.this.txtViewResults); deactivateXTextView(RBSMainActivity.this.txtViewSight); switch (this.viewFlipper.getDisplayedChild()) { case 0: xTextViewUp(this.txtViewParams); break; case 1: xTextViewUp(this.txtViewResults); break; case 2: xTextViewUp(this.txtViewSight); break; default: break; } break; } } return false; } private void xTextViewDown(final XTextView view) { view.setDrawborderColor(getResources().getColor(R.color.android_blue_dark)); view.setTextColor(getResources().getColor(R.color.android_blue_dark)); } private void xTextViewUp(final XTextView view) { view.setDrawborderColor(getResources().getColor(R.color.android_blue)); view.setTextColor(getResources().getColor(R.color.android_blue)); } private void deactivateXTextView(final XTextView view) { view.setDrawborderColor(getResources().getColor(R.color.white)); view.setTextColor(getResources().getColor(R.color.white)); } }