Несмотря на множество статей, касающихся Android, в SitePoint, прошло много времени с тех пор, как у нас были настоящие учебники для начинающих. Как лучше восполнить этот пробел, чем с помощью основного учебника для начинающих, приложение «To Do».
Необходимое программное обеспечение
Ингредиенты, которые нужны каждому разработчику Android:
- Android Studio , официальная Android IDE (интегрированная среда разработки). Возможно, еще есть разработчики, использующие старый плагин ADT для Eclipse, но он больше не поддерживается. IntelliJ IDEA также поддерживает разработку под Android, так что вы можете использовать это тоже.
- Android SDK – это набор инструментов, который управляет всем необходимым для создания приложения для Android. Он поставляется вместе с Android Studio, но если вы решите использовать другую IDE, вам придется скачать ее.
Полезно иметь устройство Android, чтобы вы могли протестировать приложение во время разработки. Если вы не можете заполучить устройство Android, вы можете использовать эмулятор по умолчанию или Genymotion .
Декомпиляция Андройд приложений (подробно)
Примечание . Самым большим плюсом и недостатком Android является его гибкость. Я буду использовать конкретную версию IDE и SDK. Если ваши настройки отличаются, то настройки, код и снимки экрана также могут отличаться.
Вам понадобятся базовые знания Java, чтобы следовать этому руководству.
Начиная
Вы можете найти окончательный код этого проекта на GitHub .
Чтобы создать новый проект, откройте Android Studio и нажмите « Начать новый проект Android Studio» . Назовите приложение «TodoList» и добавьте домен вашей компании, который будет пакетом приложения. В магазине Play Store не может быть двух приложений с одинаковым именем пакета или именем «com.example». Я назову мой ком.азифлай.тодолист .
Затем выберите платформы, для которых вы хотите разработать. Я рекомендую установить минимальный SDK для поддержки API уровня 15 и выше. Это означает, что приложение будет поддерживать каждый смартфон с Android 4.0.3 или более поздней версии.
На следующем экране выберите « Пустое действие» и оставьте имя MainActivity .
Когда Android Studio завершит создание проекта, у вас будет приложение «Hello, World» по умолчанию.
Построение Представления
В MainActivity.java у вас должен быть код, подобный приведенному ниже:
В строке 11 вы устанавливаете представление этого действия на R.layout.activity_main , который указывает на файл с именем activity_main.xml в каталоге / res / layout проекта. Представление управляет макетом интерфейса Android и выглядит следующим образом:
На главном экране вы добавите ListView , который будет содержать элемент ToDo в каждой строке. Для этого замените элемент TextView кодом:
Теперь вы определите элемент списка, который будет представлять задачу в интерфейсе.
Как посмотреть исходный код android приложения? Декомпиляция .apk файла (реверс инжиниринг)
Создайте новый файл макета в папке / res / layout с именем item_todo.xml . В этот файл вы добавите два элемента: TextView для отображения задачи и Button «Done» для удаления задачи. Добавьте этот код в item_todo.xml , заменив все, что уже есть.
Приложению необходим пункт меню, позволяющий пользователю добавлять больше задач. Добавьте файл main_menu.xml в каталог / res / menu со следующим кодом:
Добавьте следующий код в файл MainActivity.java после метода onCreate :
Разработчики Android часто создают константу TAG с именем класса для ведения журнала. Добавьте это в начало класса MainActivity :
public class MainActivity extends AppCompatActivity < private static final String TAG = «MainActivity»; .
Метод onCreateOptionsMenu() раздувает (отображает) меню в основном onOptionsItemSelected() и использует метод onOptionsItemSelected() для реагирования на различные взаимодействия пользователя с onOptionsItemSelected() меню. Если вы запустите приложение, оно должно выглядеть примерно так:
Если вы нажмете кнопку «Добавить», вы увидите нечто подобное в журнале Android Studio:
03-26 22:12:50.327 2549-2549/? D/MainActivity: Add a new task
Затем вы добавите AlertDialog чтобы получить задачу от пользователя при нажатии кнопки добавления элемента. Вы уже знаете, куда добавить код, реагирующий на пользователя, поэтому замените оператор регистрации следующим:
Теперь, нажав кнопку «плюс», вы получите следующее:
Введите текст, и когда вы нажмете кнопку « Добавить» , журнал Android Studio («logcat») покажет что-то вроде этого:
03-26 23:32:18.294 12549-12549/? D/MainActivity: Task to add: I want to learn Android Development
Хранение и получение данных
Android поставляется со встроенной базой данных SQLite . База данных нуждается в таблице, прежде чем она сможет хранить какие-либо задачи, называемые «TaskTable». Создайте новую папку базы данных в том же месте, что и MainActivity.java . Затем создайте новый класс с именем TaskContract с именем файла TaskContract.java :
Добавьте этот код в TaskContract.java , соответствующим образом изменив два имени пакета.
package com.aziflaj.todolist.db; import android.provider.BaseColumns; public class TaskContract < public static final String DB_NAME = «com.aziflaj.todolist.db»; public static final int DB_VERSION = 1; public class TaskEntry implements BaseColumns < public static final String TABLE = «tasks»; public static final String COL_TASK_TITLE = «title»; >>
Класс TaskContract определяет константы, которые используются для доступа к данным в базе данных. Вам также нужен вспомогательный класс TaskDbHelper для открытия базы данных. Создайте этот класс в пакете db и добавьте следующий код:
В строках с 15 по 17 этот SQL-запрос:
CREATE TABLE tasks ( _id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL );
Теперь вам нужно MainActivity для хранения данных в базе данных. Добавьте этот код, где вы определили DialogInterface.OnClickListener() для AlertDialog добавления AlertDialog , заменив:
String task = String.valueOf(taskEditText.getText()); Log.d(TAG, «Task to add: » + task);
String task = String.valueOf(taskEditText.getText()); SQLiteDatabase db = mHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task); db.insertWithOnConflict(TaskContract.TaskEntry.TABLE, null, values, SQLiteDatabase.CONFLICT_REPLACE); db.close();
Это делает весь onOptionsItemSelected() следующим образом:
Добавьте частный экземпляр TaskDbHelper в класс MainActivity :
private TaskDbHelper mHelper;
И инициализируйте его в onCreate() :
mHelper = new TaskDbHelper(this);
Если вы запустите приложение, вы не увидите никаких отличий в пользовательском интерфейсе, но вы можете проверить, работает ли база данных, выполнив следующие команды на терминале:
[local] $ adb shell [android] $ run-as com.aziflaj.todolist [android] $ cd databases [android] $ sqlite3 com.aziflaj.todolist.db sqlite3> .dump
Примечание . Если две последние команды не работают, утилита SQLite3 не включена в большинство производственных устройств, но вы можете установить ее самостоятельно.
Теперь вам нужно получить все данные из базы данных и показать их в главном окне.
Замените ваш MainActivity.onCreate() следующим:
Когда вы запустите приложение, LogCat покажет список всех задач, хранящихся в базе данных. Далее вы будете отображать данные на главном экране с помощью Adapter .
Получите ссылку на ListView созданный в файле activity_main.xml , добавив экземпляр ListView :
private ListView mTaskListView;
Инициализируйте ссылку, добавив эту строку кода в метод onCreate() сразу после создания mHelper :
mTaskListView = (ListView) findViewById(R.id.list_todo);
Переместите код (с некоторыми изменениями), который регистрировал задачи, в закрытый метод updateUI() :
private void updateUI() < ArrayListtaskList = new ArrayList<>(); SQLiteDatabase db = mHelper.getReadableDatabase(); Cursor cursor = db.query(TaskContract.TaskEntry.TABLE, new String[], null, null, null, null, null); while (cursor.moveToNext()) < int idx = cursor.getColumnIndex(TaskContract.TaskEntry.COL_TASK_TITLE); taskList.add(cursor.getString(idx)); >if (mAdapter == null) < mAdapter = new ArrayAdapter<>(this, R.layout.item_todo, R.id.task_title, taskList); mTaskListView.setAdapter(mAdapter); > else < mAdapter.clear(); mAdapter.addAll(taskList); mAdapter.notifyDataSetChanged(); >cursor.close(); db.close(); >
Добавьте это приватное поле в класс MainActivity :
private ArrayAdapter mAdapter;
Этот ArrayAdapter поможет заполнить ListView данными.
Если вы не понимаете метод updateUI() , это нормально. Вместо того, чтобы регистрировать задачи, добавьте их в ArrayList of Strings. Затем проверьте, создан ли mAdapter или нет. Если это не так, а mAdapter имеет значение null, создайте и установите его в качестве адаптера ListView :
mAdapter = new ArrayAdapter<>(this, R.layout.item_todo, // what view to use for the items R.id.task_title, // where to put the String of data taskList); // where to get all the data mTaskListView.setAdapter(mAdapter); // set it as the adapter of the ListView instance
Если адаптер уже создан (что означает, что он назначен для ListView ), очистите его, повторно заполните и уведомите представление об изменении данных. Это означает, что вид будет перекрашиваться на экране с новыми данными.
Чтобы увидеть обновленные данные, необходимо вызывать метод updateUI() каждый раз, когда меняются базовые данные приложения. Итак, добавьте его в двух местах:
- В onCreate() , который изначально показывает все данные
- После добавления новой задачи с помощью AlertDialog
Удаление задач
После завершения задачи ее следует удалить из списка.
Откройте макет item_todo.xml и добавьте эту строку в тег Button :
android_onClick=»deleteTask»
Когда кнопка нажата, она вызывает этот метод deleteTask() в классе MainActivity :
public void deleteTask(View view) < View parent = (View) view.getParent(); TextView taskTextView = (TextView) parent.findViewById(R.id.task_title); String task = String.valueOf(taskTextView.getText()); SQLiteDatabase db = mHelper.getWritableDatabase(); db.delete(TaskContract.TaskEntry.TABLE, TaskContract.TaskEntry.COL_TASK_TITLE + » = ?», new String[]); db.close(); updateUI(); >
Теперь, нажав кнопку « Done , вы удалите задачу из списка и базу данных SQLite.
Заключительные слова
После написания всего этого кода у вас есть простое приложение TodoList, созданное на Java для Android. Если это руководство заинтересовало вас в получении дополнительной информации, то следующим шагом будет просмотр остальной части содержимого SitePoint для Android . Наслаждайтесь!
Источник: coderlessons.com
Сложение двух чисел в Android Studio на Java (Android приложение)
В статье рассказывается как создать приложения сложения двух чисел в Android Studio для Android.
Приготовления
В статье Установка Android Studio в Windows узнаете, как установить и настроить Android Studio.
Создание проекта
Перейдем вначале к файлу activity_main.xml , который отвечает за разметку внешнего вида приложения:
В Android Studio 4 изменили размещение переключателя дизайна и кода разметки экрана:
Размещение компонентов
По умолчанию в Android Studio в качестве разметки используется контейнер ConstraintLayout . Для новичков он не совсем простой. Поменяем на обычный LinearLayout .
Перейдем в текстовой режим разметки XML файла. Там мы внутри контейнера ConstraintLayout видим элемент TextView с фразой Hello, World! :
И заменим содержимое всего файла на следующий код:
xmlns_android=»http://schemas.android.com/apk/res/android» android_layout_width=»match_parent» android_layout_height=»match_parent» android_paddingLeft=»16dp» android_paddingRight=»16dp» android_orientation=»vertical» >
В Android Studio 4 изменили размещение переключателя дизайна и кода разметки экрана:
Перейдем обратно в режим дизайна:
Перетащим текстовое поле:
Включим отображение атрибутов компонентов:
Обратим внимание на то, что поле имеет имя ( id ) editText :
Поменяем начальный текст в поле ввода на какое-нибудь число:
Перетащим еще одно текстовое поле, которое будет иметь имя editText2 :
Также поменяем начальный текст в поле ввода на какое-нибудь число:
Поменяем текст на кнопки, например, на Сложить :
Перетащим поле с текстом для вывода:
Начальный текст поменяем, например, на = :
Начальный размер шрифта в TextView маленький, так что увеличим его. За это отвечает свойство textSize , которое можно найти либо в списке всех атрибутов, либо через поиск:
В текстовом варианте получившаяся разметка будет такой:
Да, можно было не перетаскивать компоненты в визуальном режиме, а вручную написать этот код в текстовом режиме.
Соединение компонентов с Java кодом
Перейдите в окно редактирования кода главной активности:
Добавьте в класс три переменных, отвечающих за два текстовых поля ввода и одно текстовое поля вывода:
private EditText editText; private EditText editText2; private TextView textView;
Видите, что в этих строчках есть красные слова (что означает наличие ошибки). Это от того, что не подключены библиотеки для этих типов данных. Курсор (каретку) щелкните по слову EditText , и нажмите Alt + Enter . И там выберите Import class :
Также сделайте с TextView :
В методе onCreate соедините созданные переменные с теми полями, что объявлены в разметке.