DavidNorgren

Untitled

Apr 16th, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.07 KB | None | 0 0
  1. package com.example.testapp.app;
  2.  
  3. import android.support.v7.app.ActionBarActivity;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import android.view.View;
  8. import android.widget.AdapterView;
  9. import android.widget.AdapterView.OnItemSelectedListener;
  10. import android.widget.Spinner;
  11. import android.widget.ArrayAdapter;
  12. import android.widget.TextView;
  13. import android.widget.EditText;
  14. import android.widget.Button;
  15.  
  16. public class MainActivity extends ActionBarActivity {
  17.     private TextView textResult;
  18.     private EditText inputValue;
  19.     private Button convertButton;
  20.     private Spinner spinnerCategories, spinnerValue1, spinnerValue2;
  21.     private Unit[] spinnerTemperatureUnits = {
  22.             new Unit("Celsius", 1f),
  23.             new Unit("Kelvin", 1f),
  24.             new Unit("Fahrenheit", 1f)
  25.     };
  26.     private Unit[] spinnerLengthUnits = {
  27.             new Unit("Centimetres", 1f),
  28.             new Unit("Millimetres", 0.1f),
  29.             new Unit("Metres", 100f),
  30.             new Unit("Kilometres", 100000f),
  31.             new Unit("Miles", 160934f),
  32.             new Unit("Feet", 30.48f),
  33.             new Unit("Inches", 2.54f)
  34.     };
  35.     private Unit[] spinnerVolumeUnits = {
  36.             new Unit("Cubic Meters", 1f),
  37.             new Unit("Litres", 0.001f),
  38.             new Unit("Cubic Kilometres", 1000000000f),
  39.             new Unit("Gallons", 264.172f)
  40.     };
  41.     private Unit[] spinnerWeightUnits = {
  42.             new Unit("Kilos", 1f),
  43.             new Unit("Grams", 0.001f),
  44.             new Unit("Tonnes", 1000f),
  45.             new Unit("Pounds", 0.453592f)
  46.     };
  47.  
  48.  
  49.     @Override
  50.     protected void onCreate(Bundle savedInstanceState) {
  51.         super.onCreate(savedInstanceState);
  52.         setContentView(R.layout.activity_main);
  53.  
  54.         inputValue = (EditText) findViewById(R.id.inputValue);
  55.         textResult = (TextView) findViewById(R.id.textResult);
  56.         spinnerCategories = (Spinner) findViewById(R.id.spinnerCategories);
  57.         spinnerValue1 = (Spinner) findViewById(R.id.spinnerValue1);
  58.         spinnerValue2 = (Spinner) findViewById(R.id.spinnerValue2);
  59.         convertButton = (Button) findViewById(R.id.convertButton);
  60.  
  61.         spinnerCategories.setOnItemSelectedListener(new OnItemSelectedListener() {
  62.             @Override
  63.             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {updateCategory();}
  64.             @Override
  65.             public void onNothingSelected(AdapterView<?> arg0) {}
  66.         });
  67.  
  68.         spinnerValue1.setOnItemSelectedListener(new OnItemSelectedListener() {
  69.             @Override
  70.             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {updateValues();}
  71.             @Override
  72.             public void onNothingSelected(AdapterView<?> arg0) {}
  73.         });
  74.  
  75.         spinnerValue2.setOnItemSelectedListener(new OnItemSelectedListener() {
  76.             @Override
  77.             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {updateValues();}
  78.             @Override
  79.             public void onNothingSelected(AdapterView<?> arg0) {}
  80.         });
  81.  
  82.         convertButton.setOnClickListener(new View.OnClickListener() {
  83.             @Override
  84.             public void onClick(View view) {updateValues();}
  85.         });
  86.     }
  87.  
  88.     private void fillList(Spinner spinner, Unit[] list) {
  89.         Unit[] units = new Unit[list.length];
  90.         for (int i = 0; i < list.length; i++) units[i] = list[i];
  91.         spinner.setAdapter(new ArrayAdapter<Unit>(this,android.R.layout.simple_spinner_item, units));
  92.     }
  93.  
  94.     private void updateCategory() {
  95.         switch (spinnerCategories.getSelectedItemPosition()) {
  96.             case 0: // Temperature
  97.                 fillList(spinnerValue1, spinnerTemperatureUnits);
  98.                 fillList(spinnerValue2, spinnerTemperatureUnits);
  99.                 spinnerValue1.setSelection(0); // Celsius
  100.                 spinnerValue2.setSelection(2); // Fahrenheit
  101.                 break;
  102.             case 1: // Length
  103.                 fillList(spinnerValue1, spinnerLengthUnits);
  104.                 fillList(spinnerValue2, spinnerLengthUnits);
  105.                 spinnerValue1.setSelection(2); // Metres
  106.                 spinnerValue2.setSelection(5); // Feet
  107.                 break;
  108.             case 2: // Volume
  109.                 fillList(spinnerValue1, spinnerVolumeUnits);
  110.                 fillList(spinnerValue2, spinnerVolumeUnits);
  111.                 spinnerValue1.setSelection(0); // Litres
  112.                 spinnerValue2.setSelection(3); // Gallons
  113.                 break;
  114.             case 3: // Weight
  115.                 fillList(spinnerValue1, spinnerWeightUnits);
  116.                 fillList(spinnerValue2, spinnerWeightUnits);
  117.                 spinnerValue1.setSelection(0); // Kilos
  118.                 spinnerValue2.setSelection(3); // Pounds
  119.                 break;
  120.         }
  121.         updateValues();
  122.     }
  123.     private void updateValues() {
  124.         float input = Float.parseFloat(inputValue.getText().toString());
  125.         float result = input;
  126.         int fromNumber = spinnerValue1.getSelectedItemPosition(), toNumber = spinnerValue2.getSelectedItemPosition();
  127.         switch (spinnerCategories.getSelectedItemPosition()) {
  128.             case 0:
  129.                 if (fromNumber == 0 && toNumber == 1) result = input + 273.15f; // Celsius->Kelvin
  130.                 else if (fromNumber == 0 && toNumber == 2) result = input / (5f / 9f) + 32f; // Celsius->Fahrenheit
  131.                 else if (fromNumber == 1 && toNumber == 0) result = input - 273.15f; // Kelvin->Celsius
  132.                 else if (fromNumber == 1 && toNumber == 2) result = (input - 32f) * (5f / 9f) + 273.15f; // Kelvin->Fahrenheit
  133.                 else if (fromNumber == 2 && toNumber == 0) result = (5f / 9f) * (input - 32f); // Fahrenheit->Celsius
  134.                 else if (fromNumber == 2 && toNumber == 1) result = (input + 459.67f) * (5f / 9f); // Fahrenheit->Celsius
  135.                 break;
  136.             case 1: result = (input * spinnerLengthUnits[fromNumber].getRatio()) / spinnerLengthUnits[toNumber].getRatio(); break;
  137.             case 2: result = (input * spinnerVolumeUnits[fromNumber].getRatio()) / spinnerVolumeUnits[toNumber].getRatio(); break;
  138.             case 3: result = (input * spinnerWeightUnits[fromNumber].getRatio()) / spinnerWeightUnits[toNumber].getRatio(); break;
  139.         }
  140.         textResult.setText(Float.toString(result));
  141.     }
  142.  
  143.     @Override
  144.     public boolean onCreateOptionsMenu(Menu menu) {
  145.        
  146.         // Inflate the menu; this adds items to the action bar if it is present.
  147.         getMenuInflater().inflate(R.menu.main, menu);
  148.         return true;
  149.     }
  150.  
  151.     @Override
  152.     public boolean onOptionsItemSelected(MenuItem item) {
  153.         // Handle action bar item clicks here. The action bar will
  154.         // automatically handle clicks on the Home/Up button, so long
  155.         // as you specify a parent activity in AndroidManifest.xml.
  156.         int id = item.getItemId();
  157.         if (id == R.id.action_settings) {
  158.             return true;
  159.         }
  160.         return super.onOptionsItemSelected(item);
  161.     }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment