Главная » Конвертер температуры | |
Вдогонку за нашим приложением "Калькулятор" создадим еще одну предельно полезную вещь, а именно конвертер температуры. Как часто бывает, что нерадивый студент намертво зависает в решении задачки по причине того, что забыл, как там сделать с градусов Цельсия градусы Фаренгейта, и наоборот. Сегодня пришло время положить этому конец! Итак создаем новый проект,все названия я оставлю по умолчанию, вы можете вводить, что хотите, лишь бы сами не запутались. Давайте настроим внешний вид нашего конвертера в файле 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:
| |
|
Всего комментариев: 0 | |