Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

19. Пишем простой калькулятор

Лекция



Привет, Вы узнаете о том , что такое пишем простой калькулятор, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое пишем простой калькулятор , настоятельно рекомендую прочитать все из категории Программирование мобильных устройств Android и IOs.

В этом уроке мы:

- пишем приложение - калькулятор

 

Попробуем написать простейший калькулятор, который берет два числа и проводит с ними операции сложения, вычитания, умножения или деления. Результат отображает в виде полного выражения.

 

Создадим проект:

Project name: P0191_SimpleCalculator
Build Target: Android 2.3.3
Application name: SimpleCalculator
Package name: ru.startandroid.develop.simplecalculator
Create Activity: MainActivity

 

Откроем main.xml и нарисуем экран:

<?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"> 
<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/linearLayout1" 
android:layout_marginLeft="10pt" 
android:layout_marginRight="10pt" 
android:layout_marginTop="3pt"> 
<EditText 
android:layout_weight="1" 
android:layout_height="wrap_content" 
android:layout_marginRight="5pt" 
android:id="@+id/etNum1" 
android:layout_width="match_parent" 
android:inputType="numberDecimal"> 
</EditText> 
<EditText 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_marginLeft="5pt" 
android:id="@+id/etNum2" 
android:layout_width="match_parent" 
android:inputType="numberDecimal"> 
</EditText> 
</LinearLayout> 
<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/linearLayout2" 
android:layout_marginTop="3pt" 
android:layout_marginLeft="5pt" 
android:layout_marginRight="5pt"> 
<Button 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:layout_weight="1" 
android:text="+" 
android:textSize="8pt" 
android:id="@+id/btnAdd"> 
</Button> 
<Button 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:layout_weight="1" 
android:text="-" 
android:textSize="8pt" 
android:id="@+id/btnSub"> 
</Button> 
<Button 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:layout_weight="1" 
android:text="*" 
android:textSize="8pt" 
android:id="@+id/btnMult"> 
</Button> 
<Button 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:layout_weight="1" 
android:text="/" 
android:textSize="8pt" 
android:id="@+id/btnDiv"> 
</Button> 
</LinearLayout> 
<TextView 
android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:layout_marginLeft="5pt" 
android:layout_marginRight="5pt" 
android:textSize="12pt" 
android:layout_marginTop="3pt" 
android:id="@+id/tvResult" 
android:gravity="center_horizontal"> 
</TextView> 
</LinearLayout>

 

Тут есть два поля ввода4 кнопки и текстовое поле для вывода. Об этом говорит сайт https://intellect.icu . Обратите внимание на атрибут inputType для EditText. Он задает тип содержимого. Я указал numberDecimal – т.е. в поле получится ввести только цифры и запятую, буквы он не пропустит. Это удобно, не надо самому кодить различные проверки.

Для TextView указан атрибут gravity. Он указывает, как будет расположен текст в TextView. Не путайте с layout_gravity, который отвечает за размещение TextView в ViewGroup.

Теперь нам надо читать содержимое полей, определять какую кнопку нажали и выводить нужный результат. Открываем MainActivity.java и пишем код

public class MainActivity extends Activity implements OnClickListener {

  EditText etNum1;
  EditText etNum2;

  Button btnAdd;
  Button btnSub;
  Button btnMult;
  Button btnDiv;

  TextView tvResult;

  String oper = "";

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // находим элементы
    etNum1 = (EditText) findViewById(R.id.etNum1);
    etNum2 = (EditText) findViewById(R.id.etNum2);

    btnAdd = (Button) findViewById(R.id.btnAdd);
    btnSub = (Button) findViewById(R.id.btnSub);
    btnMult = (Button) findViewById(R.id.btnMult);
    btnDiv = (Button) findViewById(R.id.btnDiv);

    tvResult = (TextView) findViewById(R.id.tvResult);

    // прописываем обработчик
    btnAdd.setOnClickListener(this);
    btnSub.setOnClickListener(this);
    btnMult.setOnClickListener(this);
    btnDiv.setOnClickListener(this);

  }

  @Override
  public void onClick(View v) {
    // TODO Auto-generated method stub
    float num1 = 0;
    float num2 = 0;
    float result = 0;

    // Проверяем поля на пустоту
    if (TextUtils.isEmpty(etNum1.getText().toString())
        || TextUtils.isEmpty(etNum2.getText().toString())) {
      return;
    }

    // читаем EditText и заполняем переменные числами
    num1 = Float.parseFloat(etNum1.getText().toString());
    num2 = Float.parseFloat(etNum2.getText().toString());

    // определяем нажатую кнопку и выполняем соответствующую операцию
    // в oper пишем операцию, потом будем использовать в выводе
    switch (v.getId()) {
    case R.id.btnAdd:
      oper = "+";
      result = num1 + num2;
      break;
    case R.id.btnSub:
      oper = "-";
      result = num1 - num2;
      break;
    case R.id.btnMult:
      oper = "*";
      result = num1 * num2;
      break;
    case R.id.btnDiv:
      oper = "/";
      result = num1 / num2;
      break;
    default:
      break;
    }

    // формируем строку вывода
    tvResult.setText(num1 + " " + oper + " " + num2 + " = " + result);
  }
}

Думаю, все понятно по каментам. Читаем значения, определяем кнопку, выполняем операцию и выводим в текстовое поле. Обработчиком нажатий на кнопки выступает Activity.

Все сохраним и запустим.

19. Пишем простой калькулятор

 

Давайте для большего функционала сделаем меню с пунктами очистки полей и выхода из приложения. Пункты будут называться Reset и Quit.

Добавим две константы – это будут ID пунктов меню.

public class MainActivity extends Activity implements OnClickListener {

final int MENU_RESET_ID = 1;
final int MENU_QUIT_ID = 2;

EditText etNum1;

(добавляете только подчеркнутый код)

 

И напишем код создания и обработки меню:

// создание меню
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, MENU_RESET_ID, 0, "Reset");
menu.add(0, MENU_QUIT_ID, 0, "Quit");
return super.onCreateOptionsMenu(menu);
}

// обработка нажатий на пункты меню
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case MENU_RESET_ID:
// очищаем поля
etNum1.setText("");
etNum2.setText("");
tvResult.setText("");
break;
case MENU_QUIT_ID:
// выход из приложения
finish();
break;
}
return super.onOptionsItemSelected(item);
}

 

Сохраним все, запустим. Появилось два пункта меню:
Reset – очищает все поля
Quit – закрывает приложение

В качестве самостоятельной работы вы можете реализовать проверку деления на ноль. И выводить какое-нить сообщение с помощью Toast или прямо в поле результата.

 

На следующем уроке:

- рассмотрим анимацию View-компонентов

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

Из статьи мы узнали кратко, но содержательно про пишем простой калькулятор
создано: 2016-02-08
обновлено: 2024-11-12
134



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Программирование мобильных устройств Android и IOs

Термины: Программирование мобильных устройств Android и IOs