вівторок, 19 лютого 2013 р.

Створення програми для пристроїв під операційною системою Android, частина 3

Графічний інтерфейс користувача програмою під ОС Android, побудований на основі ієрархії елементів, які відображуються (View), та груп цих елементів (ViewGroup). Елементами що зображуються є кнопки, поля та ін., а групи об’єктів це невидимі контейнери, що визначають як повинні їх дочірні елементи розміщуватись у просторі. Ця ієрархія і будується за допомогою мови розмітки XML.

Для прикладу створимо просту програму, яка буде відправляти текстове повідомлення з однієї сторінки на іншу. Для цього відкрийте файл activity_main.xml (що в директорії res/layout/) в текстовому вигляді та зітріть тег <TextView>, а також перейменуйте тег <RelativeLayout> на <LinearLayout>.
P.S. Програма Eclipse має зручну властивість, щоб не набирати команди і параметри повністю - досить набрати перші символи та натиснути комбінацію клавіш Ctrl+Пробіл, та в випадаючому списку обрати потрібну вам команду.
 Також потрібно додати параметр орієнтації внутрішніх об’єктів android:orientation="horizontal". Повинно вийти наступне:
<LinearLayout 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:orientation="horizontal"
            tools:context=".MainActivity" > 
</LinearLayout>
Далі додамо всередині контейнера текстове поле <EditText>.
<EditText android:id="@+id/edit_message"
           android:layout_weight="1"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:hint="@string/edit_message" />
 Тег текстового поля має параметри:

  • android:id - цей параметр аналогічний параметру id в HTML він ідентифікує об’єкт, щоб потім до нього можна було звертатися. В значенні параметру спочатку пишеться тим значення, в даному випадку це id, це нестандартний тип тому його потрібно створити, із-за цього перед указанням типу значення ставиться знак +. Створений об’єкт від тепер буде ідентифікуватися як edit_message.
  • android:layout_weight - цей параметр означає значущість цього об’єта, перед сусідніми. Чим більше значення тим більше місця займає об’єкт. За умовчуванням цей параметр дорівнює 0.
  • android:layout_width та android:layout_height - так само як і в контейнері визначає довжину і ширину об’єкта, в даному випадку висота відносно вмісту, а ширина - 0.
  • android:hint - цей параметр означає, яким буде першочерговий надпис, спонукаючий до введення значення в поле.
Для відсилання нашого повідомлення не вистачає, ще кнопки - створимо кнопку.
<Button
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/button_send" />
В даного тегу повторюються параметри, окрім android:text - це надпис на кнопці.
Тепер загальний текст файлу має такий вигляд:
<LinearLayout 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:orientation="horizontal"
tools:context=".MainActivity" >
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
   
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
   
</LinearLayout>
Після цього потрібно призначити значення строковим змінним. Для цього потрібно відкрити файл res/values/strings.xml в текстовому вигляді, та змінити текст файлу на наступний:

<?xml version="1.0" encoding="utf-8"?>
<resources>
         <string name="app_name">My First App</string>
         <string name="edit_message">Enter a message</string>
         <string name="button_send">Send</string>
         <string name="menu_settings">Settings</string>
         <string name="title_activity_main">MainActivity</string>
</resources>

Якщо хочете, можете змінити значення змінних за вашим бажанням.
Після цих змін можна запустити нашу програму на виконання, і подивитися що у нас вийшло.
Тепер додамо дії до нашої програми. Для цього потрібно відкрити файл activity_main.xml і до тегу <Button> додати параметр android:onClick="sendMessage". Цей параметр означає, що при натисненні на цей об’єкт виконається метод sendMessage.
Метод, що буде виконуватись, прописується в класі, файл якого знаходиться в директорії src/.
До класу потрібно додати наступний метод:

public void sendMessage(View view) {
         Intent intent = new Intent(this, DisplayMessageActivity.class);
   EditText editText = (EditText) findViewById(R.id.edit_message);
   String message = editText.getText().toString();
   intent.putExtra(EXTRA_MESSAGE, message);
         startActivity(intent);
}
 Перша строчка методу, створює об’єкт, якому присвоюється новий фрейм на основі DisplayMessageActivity.class (ми його потім створимо). Далі створюється об’єкт типу текстове поле, якому присвоюється нами створений об’єкт edit_message, потім строковій змінній message присвоюється значення введеного в поле тексту. Нарешті значення строкової змінної message присвоюється глобальній змінній EXTRA_MESSAGE і запускається новий фрейм.
Також потрібно на початку класу визначити глобальну змінну EXTRA_MESSAGE.

public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.max.post.MESSAGE";
        ...
}
Значення змінної  "com.max.post.MESSAGE" повинно називатися за ім’ям вашого пакету. Створений клас потребує імпортування додаткових бібліотек, для того щоб Eclipse вписав імпортування автоматично - потрібно натиснути комбінацію клавіш Ctrl+Shift+O, при цьому повинні дописатися імпортування потрібних бібліотек.

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
Далі створимо новий фрейм  DisplayMessageActivity, в якому буде показуватися відправлене нами повідомлення. Для цього потрібно вибрати в головному меню File->New->Other...->Android->Android Activity. Обрати пустий фрейм. Далі заповнити поля: назву вашого проекту, назва фрейма буде DisplayMessageActivity, назву шаблону (layout) залишаєте як є, та назву заголовку можете написати довільну. Після цього натискаємо Finish.
Відкриваємо файл /src/DisplayMessageActivity.java та переписуємо його на:

public class DisplayMessageActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(30);
textView.setText(message);
setContentView(textView);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
Натискаємо комбінацію клавіш Ctrl+Shift+O, щоб додати імпортовані бібліотеки. В класі твориться наступне - в методі onCreate створюється новий об’єкт intent, з нього в строкову змінну message витягується значення глобальної змінної з головного фрейму. Далі створюється новий об’єкт тексту TextView, тексту задається розмір textView.setTextSize(30), та задається значення тексту змінною message. Після цього створений об’єкт тексту виводиться на екран.
Запускаємо програму і дивимося на результат.


Для встановлення програми на телефон, пакет в форматі .apk знаходиться в директорії {директорія проектів}/{назва проекту}/bin/{назва проекту}.apk.


понеділок, 18 лютого 2013 р.

Створення програми для пристроїв під операційною системою Android, частина 2

При створенні нового проекту, Eclipse вже згенерувала нам просту програму "Hello World". Її вже можна запустити на виконання. Зробити це, на сайті розробників, пропонують двома способами: запускаючи зразу на телефон (чомусь в мене це не вийшло), та запустити за допомогою емулятора.
Для запуску за допомогою емулятора потрібно зробити деякі налаштування:
В головному меню вибрати Window->Android Virtual Device Manager.
В вікні що з’явилося, потрібно створити віртуальний пристрій, на якому буде запускатися ваша програма. Потрібно натиснути кнопку New.
В вікні вписуєте назву пристрою, роздільну здатність, версію ОС (якщо ваша версія не вказана, її потрібно встановити за допомогою Window->Android SDK Manager), оперативна пам’ять, пам’ять на телефоні та розмір зовнішньої пам’яті.
Після створення нового пристрою потрібно його виділити в списку та натиснути кнопку Start, а потім Launch. Після цього повинно з’явитися вікно емулятора і в ньому довго завантажуючийся Android.
Після завантаження повинно з’явитися щось таке:
Для налаштування запуску програми потрібно зайти в Run->Run Configurations..., двічі натиснути на  Adroid Aplication, створиться нова конфігурація, потрібно вказати проект (натиснути Browse). 
На вкладці Target поставить галочку на створеному пристрої. Натиснути кнопку прийняти зміни (Apply). А потім Run. 
Далі чекайте поки програма запуститься на віртуальному пристрої.
Для встановлення програми на телефон, пакет в форматі .apk знаходиться в директорії {директорія проектів}/{назва проекту}/bin/{назва проекту}.apk.

Продовження слідує...



Створення програми для пристроїв під операційною системою Android

Для розуміння цієї статті потрібно мати початкові навички в програмуванні на Java та XML.
Для пізнання цих мов ознайомтеся з посиланнями Освоюємо Java — Вікіпідручник та XML — Вікіпедія.
Програмування для Android здійснюється на основі двох мов програмування Java та XML. За допомогою XML здійснюється опис елементів (кнопки, поля введення...), та за допомогою Java здійснюється створення дій для цих елементів.
Для початку роботи потрібно встановити (якщо не встановлено): JDK та Eclipse зі спеціальною бібліотекою. Eclipse не потрібно встановлювати, просто розпакуйте в потрібний вам каталог.
При запуску програма запитає, який каталог використовувати як по замовчування, для створення проектів. Потім потрібно закрити вікно привітання та створити новий проект.
Для створення проекту потрібно натиснути в головному меню File->New->Project...->Android->Android Aplication Project.

В полі Aplication Name пишеться назва, яка буде представлена користувачу. В полі Project Name назва вашого проекту. В полі Package Name пишеться унікальна назва пакету вашої програми, вона не повинна повторюватися з існуючими програмами, в іншому випадку ваша програма буде замінювати однойменну програму при встановленні. Виробник пропонує називати пакет програми за схемою схожою на домен сайту {тип компанії}.{назва компанії}.{назва програми}, наприклад com.google.android.youtube.
Далі йдуть поля з указанням версій операційних систем, для яких пишеться дана програма. Перше поле це мінімальні вимоги, друге це рекомендована версія, третє поле це версія ОС, на яку буде компілюватися ваша програма. Четверте поле це кольорова тема вашої майбутньої програми.
Наступне вікно можна не змінювати, в ньому вказуються параметри по автоматичній генерації Eclipse-ом.
Автоматичне створення іконки, створення фрейму (Activity), місце знаходження проекту. Далі, якщо ви вибрали генерування іконки, з’являється вікно її генерації.
В цьому вікні можна створити іконку програми: за допомогою вставляння свого зображення (Image), використати стандартний кліп арт (Clipart), та створити іконку у вигляді тексту (Text). Наступними пунктами налаштування є вибір кольору та форми, для кліп арту чи тексту. Можна зробити іконку круглою чи квадратною, з фоном чи без, та змінити колір об'єкту та фону.
В наступному вікні потрібно вибрати тип фрейма (Activity), він може бути в вигляді сторінки авторизації, налаштувань, сторінки в два фрейма, з можливістю повноекранного режиму. Для нашого прикладу потрібно обрати пустий фрейм (BlankActivity).
Далі вводяться параметри цього фрейму назва та тип навігації. Для нашого прикладу залишаємо не змінним. Потім натискаємо Finish.
Eclipse автоматично генерує усі потрібні файли, і виводить для редагування XML файл розмітки фрейму. Під текстовим полем є вкладки вигляду, можна змінити на графічне редагування WYSIWYG.

Eclipse постійно генерує готовий фрейм, в якому виводиться надпис Hello World! В XML документі можемо бачити, що є головний тег RelativeLayout в якого є параметри, які відповідають за посилання до бібліотек та стандартів, також є параметри для орієнтації в просторі елементів android:layout_width і android:layout_height. Вони можуть приймати значення match_parent (на всю довжину/висоту), wrap_content (розтягувати по вмісту).
 tools:context в цьому параметрі вказується, який клас описує даний фрейм. Цей тег був парний, далі йде тег непарний TextView він відображає надпис на фреймі. В нього такі ж параметри ширини і довжини, а також є нові параметри які відповідають за орієнтацію по вертикалі та горизонталі android:layout_centerHorizontal та android:layout_centerVertical. Наступний параметр android:text посилається на текст цього надпису.
В програмуванні для андроїд зроблено так, що всі надписи в програмі посилаються на строкові значення, які зберігаються окремо в одному файлі. Це зручно з двох сторін - по-перше, якщо потрібно змінити назву програми, або якийсь часто використаний надпис, не потрібно лазити по коду і шукати його, просто він один раз змінюється в одному файлі на який посилається програма і все. По-друге, якщо робиться інтернаціональна (багатомовна) програма, то так само робляться посилання, тільки файли строкових значень для кожної мови називають з поміткою мови, і операційна система, згідно налаштувань мови пристрою, обирає потрібний файл строкових значень і потрібною мовою.
Файл зі строковими (string) значеннями міститься в каталозі {Ваш проект}/res/values/strings.xml.
Схема значення параметра посилання @string/{назва посилання}, а в документі строкових значень  <string name="{назва посилання}">{надпис}</string>.
Зараз файл строкових значень наступний:
Продовження слідує...