Вторник, 12.12.2017, 09:15
Поиск
Никнэйм
Сертификат на никнейм Olelucoye, зарегистрирован на Тимофеев Константин Михайлович
Зарегистрируй свой никнейм
Обратная связь
olelucoye.tk@yandex.ru
Реклама AdSense
Реклама
Друзья сайта
  • Лига медицинского права
  • Гостиница "Зай"
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » Андроид разработка

    Программируем калькулятор на андроид. Урок 1.

    Урок сделан специально для группы http://vk.com/amdroid.developer

    Создаем проект приложения.

    File -> New -> Android Application Project

    Заполняем поля как на первом рисунке. Здесь мы указываем имя приложения, имя пакета и версии API для создания компиляции проекта.  Приложение будем создавать для Android версии не ниже чем 4.0. Жмем Next. Оставляем галочки Create Activity и Create project in workspace, остальные убираем. Снова Next. Выбираем BlankActivity и дважды Next. Пустой проект создан. Его можно запустить в эмуляторе и посмотреть на "Hello world!"

    Открываем вкладку activity_main.xml. Это макет нашего первого активити. На втором рисунке стрелками обозначены: 1 - собственно сам наш проект, 2 - вкладки графическое изображение макета и код макета в XML, 3 - изображение макета в виде дерева объектов.

    Сейчас в макете только текстовое поле "Hello world!". Оно нам не нужно - кликаем на нем и удаляем клавишей del.

    Теперь нужно расположить текстовое  поле для отображения вводимых цифр и результатов и 16 кнопок (10 цифр, +,-,*,/, и С - для стирания результатов)

    Для удобства расположения объектов помещаем в корневой элемент вертикальный layout (перетаскиваем из палитры на дерево элементов) и растягиваем его на всю предоставленную нам площадь. Вот как это будет выглядеть в XML:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:tools="http://schemas.android.com/tools"

        ..............

        tools:context="ru.urok.super_calc.MainActivity" >

        <LinearLayout

            android:layout_width="match_parent"  -растягиваем элемент на всю площадь

            android:layout_height="match_parent" -родительского лайаута

            android:orientation="vertical" >

        </LinearLayout>

    </RelativeLayout>

    В вертикальных layout'ах элементы могут располагаться только стопкой сверху вниз, а в горизонтальных в ряд слева направо.

    В вертикальный layout перетаскиваем TextView и 4 горизонтальных layout'а. В каждый из горизонтальных layout'ов добавляем по 4 Button'a. TextView растянем по ширине экрана. В каждую кнопку добавим параметр weight = 1, что бы они были равной ширины и заполняли всю ширину экрана.

    <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_content" >

                <Button

                    android:id="@+id/button1"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="Button" />

    У всех элементов есть параметр id. Это идентификатор по которому в коде мы будем находить элементы. Сейчас они не говорят нам ни о чем. Им нужно придать какие-то осмысленные значения. Я назову кнопки btOne, btTwo ... btZero, btPlus, btMinus, btMulti, btDiv, btEqual и btClear. Текстовое поле - tvLCD.

    В параметре Text каждой кнопки нужно вписать текст который будет отображаться на кнопке, т.е. цифры, знаки операций и т.д.

    Для TextView я добавил задний фон, изменил шрифт текста который будет отображаться и убрал параметр text, чтобы элемент был пустым. В конце документа приведен полный листинг activity_main.xml. Его можно просто скопировать в пустой макет и не заморачиваться всеми действиями, которые я описывал выше. Но когда вы будете делать свой проект все-таки придется поработать ручками.

    Приложение можно снова запустить на эмуляторе и потыкать по недействующим кнопкам.

    На этом работу с макетом закончим. Украшательствами займемся позже, когда будет готов функционал приложения.

    Переходим на вкладку MainActivity.java. Здесь мы будем писать код нашего приложения. Сейчас у нас здесь три метода - onCreate и два метода для работы с меню. На данный момент нас интересует onCreate. Он вызывается системой при создании активити. Строка setContentView(R.layout.activity_main) указывает какой макет отображать на экране при создании активити.

    В этом методе нам нужно найти все объекты на макете, которые мы будем использовать в коде. Для этого нам нужно их сначала объявить, т.е сообщить активити объекты какого типа мы будем использовать и дать им имена. Делается это перед методом onCreate таким образом:

    Button btOne, btTwo, btThree, btFour, btFive;

    Button btSix, btSeven, btEight, btNine, btZero;

    Button btPlus, btMinus, btMulti, btDiv, btEqual, btClear;

    TextView btLCD;

    Объявления объектов одного типа можно объединять в одну строку, как в случае с кнопками. Типы объектов (Button, TextView) подчеркнуты красным, потому что активити еще не знает об этих объектах ничего. Классы этих объектов нужно импортировать в активити. Для этого помещаем курсор над подчеркнутым словом Button и, в появившемся окне, выбираем Import 'Button'. В импортах появляется строка import android.widget.Button. То же самое проделываем с TextView.

    Теперь нужно связать объявленные объекты с элементами на макете. Делается это в методе onCreate так:

    btOne = (Button) findViewById(R.id.btOne);

    Т.е. объект btOne связываем с элементом на макете, имеющим id btOne. Проделываем это с каждым объявленным объектом.

    С кнопками и полем определились. Теперь нужен обработчик нажатий на кнопки. Есть несколько способов обработать нажатие: назначить метод обработки нажатия на элемент прямо в макете, написать слушателя кликов и прилепить его к кнопкам или поручить обрабатывать нажатия самому активити. По желанию моей левой пятки выбираем последний.

    Сообщаем активити, что оно будет обрабатывать клики - для этого к объявлению класса дописываем (подчеркнуто):

    public class MainActivity extends Activity implements OnClickListener

    Импортируем уже известным нам способом OnClickListener. Затем наводим курсор на подчеркнутую MainActivity и выбираем Add unimplement metods. У нас появляется новый метод onClick. Ему на вход передается объект View, на который произошло нажатие.(все элементы интерфейса - кнопки, поля и т.п. - являются дочерними по отнoшению к View)

    Теперь нужно сообщить кнопкам кто будет обрабатывать их клики:

    btOne.setOnClickListener(this);

    this - в данном случае это наше активити. Такой код пишем для всех кнопок.

    На этом первый урок закончен, но что бы прийти к каком-нибудь логическому итогу, в методе onClick напишем код который выводит в текстовое поле id нажатой кнопки:

    tvLCD.setText("Нажата кнопка " + v.getId());

    Запускаем на эмуляторе, тыкаем по кнопкам. Уже какой-никакой функционал)))

    Программируем калькулятор на андроид. Урок 10.

    Программируем калькулятор на андроид. Урок 9.

    Программируем калькулятор на андроид. Урок 8.

    Программируем калькулятор на андроид. Урок 7.

    Программируем калькулятор на андроид. Урок 6.

    Программируем калькулятор на андроид. Урок 5.

    Программируем калькулятор на андроид. Урок 4.

    Программируем калькулятор на андроид. Урок 3.

    Программируем калькулятор на андроид. Урок 2.

     

    Полный листинг урока ниже:

     

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:tools="http://schemas.android.com/tools"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:paddingBottom="@dimen/activity_vertical_margin"

        android:paddingLeft="@dimen/activity_horizontal_margin"

        android:paddingRight="@dimen/activity_horizontal_margin"

        android:paddingTop="@dimen/activity_vertical_margin"

        tools:context="ru.urok.super_calc.MainActivity" >

     

        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:orientation="vertical" >

     

            <TextView

                android:id="@+id/tvLCD"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:background="#bbffff"

                android:textSize="36sp" />

     

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_content" >

     

                <Button

                    android:id="@+id/btSeven"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="7" />

     

                <Button

                    android:id="@+id/btEight"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="8" />

     

                <Button

                    android:id="@+id/btNine"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="9" />

     

                <Button

                    android:id="@+id/btPlus"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="+" />

     

            </LinearLayout>

     

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_content" >

     

                <Button

                    android:id="@+id/btFour"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="4" />

     

                <Button

                    android:id="@+id/btFive"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="5" />

     

                <Button

                    android:id="@+id/btSix"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="6" />

     

                <Button

                    android:id="@+id/btMinus"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="-" />

     

            </LinearLayout>

     

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_content" >

     

                <Button

                    android:id="@+id/btOne"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="1" />

     

                <Button

                    android:id="@+id/btTwo"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="2" />

     

                <Button

                    android:id="@+id/btThree"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="3" />

     

                <Button

                    android:id="@+id/btMulti"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="*" />

     

            </LinearLayout>

     

            <LinearLayout

                android:layout_width="match_parent"

                android:layout_height="wrap_content" >

     

                <Button

                    android:id="@+id/btZero"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="0" />

     

                <Button

                    android:id="@+id/btClear"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="C" />

     

                <Button

                    android:id="@+id/btEqual"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="=" />

     

                <Button

                    android:id="@+id/btDiv"

                    android:layout_width="wrap_content"

                    android:layout_height="wrap_content"

                    android:layout_weight="1"

                    android:text="/" />

     

            </LinearLayout>

     

        </LinearLayout>

     

    </RelativeLayout>

     

     

    MainActivity.java

    package ru.urok.super_calc;

     

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.Menu;

    import android.view.MenuItem;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    import android.widget.TextView;

     

    public class MainActivity extends Activity implements OnClickListener {

           Button btOne, btTwo, btThree, btFour, btFive;

           Button btSix, btSeven, btEight, btNine, btZero;

           Button btPlus, btMinus, btMulti, btDiv, btEqual, btClear;

           TextView tvLCD;

          

     

           @Override

           protected void onCreate(Bundle savedInstanceState) {

                 super.onCreate(savedInstanceState);

                 setContentView(R.layout.activity_main);

                

                 btOne = (Button) findViewById(R.id.btOne);

                 btTwo = (Button) findViewById(R.id.btTwo);

                 btThree = (Button) findViewById(R.id.btThree);

                 btFour = (Button) findViewById(R.id.btFour);

                 btFive = (Button) findViewById(R.id.btFive);

                 btSix = (Button) findViewById(R.id.btSix);

                 btSeven = (Button) findViewById(R.id.btSeven);

                 btEight = (Button) findViewById(R.id.btEight);

                 btNine = (Button) findViewById(R.id.btNine);

                 btZero = (Button) findViewById(R.id.btZero);

                 btPlus = (Button) findViewById(R.id.btPlus);

                 btMinus = (Button) findViewById(R.id.btMinus);

                 btMulti = (Button) findViewById(R.id.btMulti);

                 btDiv = (Button) findViewById(R.id.btDiv);

                 btEqual = (Button) findViewById(R.id.btEqual);

                 btClear = (Button) findViewById(R.id.btClear);

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

                

                 btOne.setOnClickListener(this);

                 btTwo.setOnClickListener(this);

                 btThree.setOnClickListener(this);

                 btFour.setOnClickListener(this);

                 btFive.setOnClickListener(this);

                 btSix.setOnClickListener(this);

                 btSeven.setOnClickListener(this);

                 btEight.setOnClickListener(this);

                 btNine.setOnClickListener(this);

                 btZero.setOnClickListener(this);

                 btPlus.setOnClickListener(this);

                 btMinus.setOnClickListener(this);

                 btMulti.setOnClickListener(this);

                 btDiv.setOnClickListener(this);

                 btClear.setOnClickListener(this);

                 btEqual.setOnClickListener(this);

                

           }

     

           @Override

           public boolean onCreateOptionsMenu(Menu menu) {

                 // Inflate the menu; this adds items to the action bar if it is present.

                 getMenuInflater().inflate(R.menu.main, menu);

                 return true;

           }

     

           @Override

           public boolean onOptionsItemSelected(MenuItem item) {

                 // Handle action bar item clicks here. The action bar will

                 // automatically handle clicks on the Home/Up button, so long

                 // as you specify a parent activity in AndroidManifest.xml.

                 int id = item.getItemId();

                 if (id == R.id.action_settings) {

                        return true;

                 }

     

    Категория: Андроид разработка | Добавил: Olelucoye (22.11.2014)
    Просмотров: 4602
    | Теги: Калькулятор, java, создание проекта, Android | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Меню сайта
    Категории раздела
    Андроид разработка [23]
    libGDX [24]
    Мои андроид проекты [6]
    Excel [7]
    Железяки [5]
    Скрипты в блокноте [4]
    Разное [1]
    Форма входа
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Яндекс Метрика
    Яндекс.Метрика