Конвертер температуры
Главная » Конвертер температуры

Вдогонку за нашим приложением "Калькулятор" создадим еще одну предельно полезную вещь, а именно конвертер температуры. Как часто бывает, что нерадивый студент намертво зависает в решении задачки по причине того, что забыл, как там сделать с градусов Цельсия градусы Фаренгейта, и наоборот. Сегодня пришло время положить этому конец!

Итак создаем новый проект,все названия я оставлю по умолчанию, вы можете вводить, что хотите, лишь бы сами не запутались. Давайте настроим внешний вид нашего конвертера в файле activity_main.xml. Добавим поле для ввода числового значения, две опции преобразования  градусов , а также кнопку, которая будет выполнять конвертирование. Используем элементы <EditText>, <RadioGroup>, <RaioButton> и <Button>:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <EditText
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/enter"
 android:hint="Введите число. Если число не целое, ставьте между дробной частью . но не , "/>
 <RadioGroup
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/rg">
 <RadioButton
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/Cels"
 android:text="По Цельсию"/>
 <RadioButton
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/Fara"
 android:text="По Фаренгейту"/>
 </RadioGroup>
 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:id="@+id/convert"
 android:text="Преобразовать"
 android:onClick="onClick"/>
</LinearLayout>

Далее пишем сам код для работы нашего чудного приложения. Нам понадобиться описать нажатие на кнопку "Преобразовать", описать само действие преобразования одной величины в другую введением функций пересчета, а также настроить вывод результата подсчета в том же элементе <EditText> куда мы вводили число. Код в файле MainActivity.java выглядит так:

package home.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

public class MainActivity extends Activity {

 //Объявляем переменные EditText и RadioButtom:
 private EditText mEdit;
 private RadioButton mConvert;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 //Привязываем объявленную переменную к созданному в activity_main.xml элементу EditText:
 mEdit=(EditText)findViewById(R.id.enter);

 //Объявленную выше RadioButton привязываем к кнопке преобразования градусов Цельсия в Фаренгейты,
 // дальше это будет использоваться
 mConvert=(RadioButton)findViewById(R.id.Cels);
 }
 //Вводим функцию преобразования градусов Цельсия в градусы Фаренгейта:
 private float convertCtoF (float cels) {
 return (float) (cels*1.8+32);
 }
 //Вводим функцию преобразования градусов Фаренгейта в градусы Цельсия:
 private float convertFtoC (float fara) {
 return (float) ((fara-32)/1.8);
 }
 //Обрабатываем щелчок по кнопке "Преобразовать":
 public void onClick(View view) {
 switch (view.getId()) {
 case R.id.convert:
 float enterNumber=Float.parseFloat(mEdit.getText().toString());
 //В случае выбранного первого RadioButton, программа будет пересчитывать
 //введенное значение в Цельсии:
 if (mConvert.isChecked()) {
 mEdit.setText(String.valueOf(convertFtoC(enterNumber)));
 }
 //В другом случае (а у нас их всего 2) будет работать обратная формула:
 else {
 mEdit.setText(String.valueOf(convertCtoF(enterNumber)));
 }
 break;
 }
 }
}

Ну вот и все, ребята! После всех проделанных шагов мы наконец то имеем очень даже полезную программу, незаменимую для многих студентов. Остается только запустить эмулятор/смартфон/виртуальный Android девайс и протестировать программу.

Стоит отметить, что при введении не целого числа, нужно использовать "." а не "," иначе программа вылетит (я тестировал на смартфоне Samsung Gio через ADB, Android 2.3.3). Возможно на более новой версии Android будет работать и запятая, но я все таки оговорил об этом, предвидя недовольные возгласы о нерабочей программе и вылетах.

Приведу также скриншот запущенной программы в виртуальном планшете Andy:

Конвертер

Категория: Уроки программирования | Просмотров: 909 | Добавил: Oleg | Рейтинг: 5.0/1
Всего комментариев: 0
avatar