Программирование для Android: первые результаты или мой «Hello world»

Доброго времени суток.

Программирование для Android: первые результаты или мой "Hello world"

Вот и у меня появилось первое, пока еще никому не нужное и в целом бесполезное, приложения для Android. Ну начало положено и это не может не радовать. Программировать для Android в целом занятие не из нудных, как мне показалось. Короче. Перейду к своему «приложению» )

Еще пару лет назад, когда про Android  знали наверно только его будущие разработчики, у меня была идея освоить J2ME, но как то не сложилось. И тогда же я подумал что первым неплохим примером будет написание какого нибудь простейшего калькулятора — на мой взгляд не плохой пример на замену «Hello world», хотя и без него никогда не обходиться :) Но тогда не срослось у меня ни с временем, ни с родом деятельности и забросил это дело. Как Вы поняли — для робота я тоже решил написать простейший калькулятор. Это мне помогло понять основы работы обработчика событий, разметки экрана ну и в целом процесса работы с роботом.

Результат:

package First.namespace;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class FirstActivity extends Activity
        implements OnClickListener{
    Button button0, button1 ,button2, button3, button4;
    Button button5, button6, button7, button8, button9;
    Button Sum, plus, minus, divide, multiply;
    TextView Result, num, num_last,action;
    boolean res = false;
    int sign;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        sign = 1;
        Sum = (Button)findViewById(R.id.Sum);
        button0 = (Button)findViewById(R.id.button0);
        button1 = (Button)findViewById(R.id.button1);
        button2 = (Button)findViewById(R.id.button2);
        button3 = (Button)findViewById(R.id.button3);
        button4 = (Button)findViewById(R.id.button4);
        button5 = (Button)findViewById(R.id.button5);
        button6 = (Button)findViewById(R.id.button6);
        button7 = (Button)findViewById(R.id.button7);
        button8 = (Button)findViewById(R.id.button8);
        button9 = (Button)findViewById(R.id.button9);
        plus = (Button)findViewById(R.id.plus);
        minus = (Button)findViewById(R.id.minus);
        divide = (Button)findViewById(R.id.divide);
        multiply = (Button)findViewById(R.id.multiply);
        Result = (TextView)findViewById(R.id.Result);
        num = (TextView)findViewById(R.id.num);
        num_last = (TextView)findViewById(R.id.num_last);
        action = (TextView)findViewById(R.id.action);
        Sum.setOnClickListener(this);
        button0.setOnClickListener(this);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
        button5.setOnClickListener(this);
        button6.setOnClickListener(this);
        button7.setOnClickListener(this);
        button8.setOnClickListener(this);
        button9.setOnClickListener(this);
        plus.setOnClickListener(this);
        minus.setOnClickListener(this);
        divide.setOnClickListener(this);
        multiply.setOnClickListener(this);
    }

    private void addChar(String s) {
        if(res)
        {
            res = false;
            num.setText("");
            num_last.setText("");
            action.setText("");
        }
        num_last.setText(num_last.getText() + s);
    }

    private int getResult()
    {
        int res = 0;
        int num1 = Integer.parseInt(num.getText().toString());
        int num2 = Integer.parseInt(num_last.getText().toString());
        switch (sign) {
            case 1: res = num1 + num2; break;
            case 2: res = num1 - num2; break;
            case 3: res = num1 / num2; break;
            case 4: res = num1 * num2; break;
            default: break;
        }
        return res;
    }

    private void setAct(int s) {
        res = false;
        switch (s) {
            case 1: action.setText(" + "); break;
            case 2: action.setText(" - "); break;
            case 3: action.setText(" / "); break;
            case 4: action.setText(" * "); break;
            case 0: action.setText(""); break;
            default: break;
        }
        sign = s;
        num_last.setText("");
    }

    private void setResult(){
        if (num_last.length() != 0 && num.length() == 0) {
            num.setText(num_last.getText());
        }
        else if(num_last.length() != 0 && num.length() != 0) {
            num.setText(String.valueOf(getResult()));
        }
    }

    private boolean checkEmpty(){
        if(num_last.length() == 0 && num.length() == 0) {
            onClickError("Field is empty!");
            return true;
        }
        return false;
    }

    public void onClickError(String Text) {
        Toast.makeText(this, Text, Toast.LENGTH_SHORT).show();
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button1: addChar("1"); break;
            case R.id.button2: addChar("2"); break;
            case R.id.button3: addChar("3"); break;
            case R.id.button4: addChar("4"); break;
            case R.id.button5: addChar("5"); break;
            case R.id.button6: addChar("6"); break;
            case R.id.button7: addChar("7"); break;
            case R.id.button8: addChar("8"); break;
            case R.id.button9: addChar("9"); break;
            case R.id.button0: addChar("0"); break;
            case R.id.plus:
                if(checkEmpty()) break;
                setResult(); setAct(1); break;
            case R.id.minus:
                if(checkEmpty()) break;
                setResult(); setAct(2); break;
            case R.id.divide:
                if(checkEmpty()) break;
                if(num_last.length() != 0) {
                    if(Integer.parseInt(num_last.getText().toString()) != 0  || sign != 3) {
                        setResult();
                    }
                    else {
                        onClickError("Divide to zero!!!");
                    }
                }
                setAct(3); break;
            case R.id.multiply:
                if(checkEmpty()) break;
                setResult(); setAct(4); break;
            case R.id.Sum:
                if(num_last.length() != 0 && num.length() != 0 && action.length() != 0) {
                    if(Integer.parseInt(num_last.getText().toString()) != 0  ||
                            (sign == 3 && Integer.parseInt(num_last.getText().toString()) != 0)) {
                        setResult();
                        res = true;
                    }
                    else {
                        onClickError("Divide to zero!!!");
                    }
                    setAct(0);
                }
                break;
            default: break;
        }
    }
}

Описывать полностью все шаги по созданию приложения и его файлов не вижу смысла — все отлично описано и без меня на сайте, который я упоминал в предыдущей статье. Вот файл самой программы: First.apk готовый к использованию. На текущий момент калькулятор работает только с целыми числами и имеет слегка кривую верстку (по поводу верстки еще не заморачивался — рассматривал только код). По этому листинг верстки пока не выкладываю.

Пока это все. В дальнейшем буду усложнять задачу и выкладывать результаты. Кто знает до чего это дойдет :)



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Яндекс.Метрика