IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Написание программы для изучения ин. языка Урок 1
agentru
сообщение 12.3.2010, 21:22
Сообщение #1


Администратор
***

Группа: Главные администраторы
Сообщений: 63
Регистрация: 24.10.2008
Из: Донецк
Пользователь №: 1



Статья написана Yusalex
Программирование всегда проще изучать на конкретных примерах, так было со всеми языками и со всеми платформами и Android в этом плане не исключение.

Мы начинаем цикл статей по программированию под Android. В разработке мною использована версия Android 2.1, последняя доступная на момент начала написания статей и JDK 1.6.

В каждой статье будут рассмотрены различные возможности программирования и реализованы в коде составные части приложения, о котором мы поговорим немного позже. Первая статья будет посвящена созданию меню. Условно разделим ее на две части, первая – создание меню из XML структуры (которое вызывается путем нажатия кнопки «Меню» на устройстве), и вторая часть – создание контекстного меню вызываемого при нажатии и удержании на произвольных элементах интерфейса пользователя, на Java.

Теперь немного о приложении, составные части которого, мы будем рассматривать в наших уроках. Мы создадим программу чтения адаптированных по методу Франка иностранных текстов с возможностями сохранения слов для последующего заучивания и прослушивания этих слов или предложений целиком. Далее постараемся улучшить программу, сделать ее максимально удобной для использования.

В качестве IDE в отличие от традиционного Eclipse я избрал IntellijIDEA последнюю доступную на сайте с пробным периодом месяц. Можно воспользоваться более ранней из доступных, инсталлировав плагин под Android если его там нет. Тут дело вкуса. Если вы уже знакомы и работаете с Эклипсом, продолжайте это делать, проекты с исходным кодом я буду экспортировать под Eclipse.

Предполагается, что вы знакомы с настройкой Android SDK и как минимум написали программу "Hello World", если нет, то можно начать со статьи http://googlephones.ru/forum/index.php?showtopic=6



Создаем проект в IDEA через меню File-> New Project… выбираем модуль Android Module, каталог хранения проекта, название.
Прикрепленный файл  image002.jpg ( 34.49 килобайт ) Кол-во скачиваний: 107

После чего жмем кнопку Next> и переходим к настройкам собственно приложения и выбору Android SDK (если ранее SDK не был настроен, то можно провести настройки на этом этапе). Указываем имя приложения, пакет приложения и выбираем создание простого проекта “Hello World” с указанием имени Activity, в нашем случае – это MainActivity.
Прикрепленный файл  image004.jpg ( 28.83 килобайт ) Кол-во скачиваний: 61

После нажатия кнопки Finish, IDE создаст проект и структуру каталогов под него. Теперь напишем меню из XML структуры.

На каталоге res путем нажатия правой кнопки мыши выбираем создание файла ресурса под Андроид.
Прикрепленный файл  image006.jpg ( 49.48 килобайт ) Кол-во скачиваний: 85

Выбираем тип Menu и даем имя файла, в нашем случае menu, жмем OK.
Прикрепленный файл  image008.jpg ( 7.3 килобайт ) Кол-во скачиваний: 54


IDEA создает подкаталог menu в каталоге res и файл menu.xml в котором мы будем описывать наше меню.
Откроем для редактирования файл menu.xml и создадим два пункта меню внутри тегов menu:
 <item android:id="@+id/exit"
          android:title="Exit"
          android:orderInCategory="1"
          android:icon="@drawable/icon"
          />
    <item android:id="@+id/n_ico"
          android:orderInCategory="2"
          android:title="Icon"/>

Здесь мы создали пункты меню, указали их id, надпись, позицию среди прочих элементов меню внутри категории и в первом случае назначили пункту меню рисунок.
Существует большое количество свойств, которые можно задать пунктам меню и которые IDEA предлагает на выбор через нажатие Ctrl+Space, вот некоторые из них:
Прикрепленный файл  image010.jpg ( 14.97 килобайт ) Кол-во скачиваний: 66


alphabeticShortcut – алфавитный ярлык, символ по нажатию которого на клавиатуре вызывается данный пункт меню;
checkable – возможность нахождения данного пункта меню в двух положениях «нажатого» и «не нажатого»;
checked – задает по умолчанию для меню с checkable=true выбран этот пункт или нет. Например если мы внесем такой код в xml описания меню:
<item android:title="All Menu">
            <menu>
                <item android:id="@+id/item_1"
                        android:title="1"
                        android:checkable="true" />
                <item android:id="@+id/ item_2"
                        android:title="2"
                        android:checkable="true"
                        android:checked="true" />
            </menu>
        </item>

В результате получим следующее:
Прикрепленный файл  image012.jpg ( 3.98 килобайт ) Кол-во скачиваний: 62

icon – предоставляет возможность задать пункту меню картинку и т.д.
Надо помнить, что файлов описания меню, может быть несколько. По сути для каждого окна или каждой функции мы можем создать свое меню в отдельном файле и потом обращаться по их id внутри программы.
Далее необходимо в активности MainActivity переопределить следующий метод onCreateOptionsMenu:

private Menu theMenu;

  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        new MenuInflater(getApplication())
                .inflate(R.menu.menu, menu);
        return (super.onCreateOptionsMenu(menu));
    }

После этого можно запускать приложение Прикрепленный файл  image014.jpg ( 1.66 килобайт ) Кол-во скачиваний: 37
, или, если это необходимо, настроить запуск приложения:
Прикрепленный файл  image016.jpg ( 9.42 килобайт ) Кол-во скачиваний: 38

В нашем случае – это выглядит так:
Прикрепленный файл  image018.jpg ( 31.17 килобайт ) Кол-во скачиваний: 35


Теперь наше меню вызывается путем нажатия кнопки Menu на устройстве и выглядит так:

Прикрепленный файл  image020.jpg ( 21.08 килобайт ) Кол-во скачиваний: 89

Давайте научимся обрабатывать события нажатия на пункты меню. Для этого необходимо переопределить метод onOptionsItemSelected:
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.exit:
                showAlert("Pressed Exit");
                return true;
            case R.id.n_ico:
                showAlert("Pressed Icon");
                return true;
        }
        return false;
    }
public void showAlert(String message){
        AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("Alert Icon");
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        alertDialog.setMessage(message);
        alertDialog.show();
    }

Здесь мы оператором switch выясняем, на какой пункт меню нажал пользователь и производим соответствующие действия. В нашем случае, мы выводим сообщение.
Переходим ко второй части нашей статьи, написанию контекстного меню. Это меню мы не будем писать с использованием XML структуры, а создадим его на чистой Java. Для этого переопределим метод onCreateContextMenu:
@Override
    public void onCreateContextMenu(ContextMenu menu,
android.view.View v,
ContextMenu.ContextMenuInfo menuInfo) {
        menu.add(0, 1, 0, "1 Item");
        menu.add(0, 2, 0, "2 Item");
    }


И добавим в метод onCreate вызов метода registerForContextMenu куда передадим элемент для которого регистрируем контекстное меню, в нашем случае это:
TextView textView = (TextView)findViewById(R.id.text_view1);
        registerForContextMenu(textView);


Осталось только присвоить нашему TextView соответствующее id в файле main.xml:
<TextView 
android:id="@+id/text_view1"



Запускаем приложение и нажимаем на надпись “Hello World…”, результат на следующем рисунке.
Прикрепленный файл  image022.jpg ( 17.1 килобайт ) Кол-во скачиваний: 86


Совместно мы создали простые меню двух типов и рассмотрели основные возможности работы с меню. Следующим шагом будет создание меню, которое нужно нам в нашем приложении. Здесь мы подробно не касались таких возможностей как группировка пунктов меню аналогично выбору из списка радио кнопок; создание подменю; назначение пунктам меню горячих клавиш; вызов интентов (Intents) и некоторые другие возможности. По мере необходимости мы будем задействовать эти возможности.
Go to the top of the page
 
+Quote Post
oldcyber
сообщение 15.3.2010, 15:09
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 20.1.2010
Пользователь №: 319



Всё посмотрел. Всё понятно (более-менее). Для полноты картины не хватает примера урока в виде архива проекта приложить smile.gif

Может ещё кусок, который не относится к самому примеру (лирическое отступление про меню с чек-боксами) как-то отделить от основного текста?
В конце привести целиком код MainActivity, main.xml ???
Go to the top of the page
 
+Quote Post
agentru
сообщение 16.3.2010, 0:56
Сообщение #3


Администратор
***

Группа: Главные администраторы
Сообщений: 63
Регистрация: 24.10.2008
Из: Донецк
Пользователь №: 1



Ок учтем)
Go to the top of the page
 
+Quote Post
CastorTroy
сообщение 18.3.2010, 16:55
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 6
Регистрация: 6.1.2010
Пользователь №: 309



Видимо описано было не все подробно. Т.к. у меня не выводятся на эмуляторе подобные строки с пунктами.
Если не сложно можно немножко подробнее.

спс

wacko.gif
Go to the top of the page
 
+Quote Post

Fast ReplyReply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 8.9.2010, 11:25