Полезные примеры Android

Полезные примеры Android
Android — обработка событий

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

Есть следующие три концепции, связанные с управлением событиями Android:

  • Слушатели событий — прослушиватель событий — это интерфейс в классе View, который содержит единственный метод обратного вызова. Эти методы будут вызываться платформой Android, когда представление, в котором зарегистрирован прослушиватель, запускается при взаимодействии пользователя с элементом в пользовательском интерфейсе.

  • Регистрация прослушивателей событий. Регистрация событий — это процесс, с помощью которого обработчик событий регистрируется в прослушивателе событий, чтобы обработчик вызывается, когда прослушиватель событий запускает событие.

  • Обработчики событий — когда происходит событие, и мы зарегистрировали прослушиватель событий для этого события, прослушиватель событий вызывает обработчики событий, которые являются методом, который фактически обрабатывает событие.

Слушатели событий и обработчики событий

Обработчик события Слушатель событий и описание
по щелчку()

OnClickListener ()

Это вызывается, когда пользователь либо щелкает, либо касается, либо фокусируется на каком-либо виджете, таком как кнопка, текст, изображение и т. Д. Вы будете использовать обработчик события onClick () для обработки такого события.

onLongClick ()

OnLongClickListener ()

Это вызывается, когда пользователь либо щелкает, либо касается, либо фокусируется на любом виджете, таком как кнопка, текст, изображение и т. Д., В течение одной или нескольких секунд. Вы будете использовать обработчик события onLongClick () для обработки такого события.

onFocusChange ()

OnFocusChangeListener ()

Это вызывается, когда виджет теряет фокус, т.е. пользователь уходит от просмотра. Вы будете использовать обработчик события onFocusChange () для обработки такого события.

onKey ()

OnFocusChangeListener ()

Это вызывается, когда пользователь фокусируется на элементе и нажимает или отпускает аппаратную клавишу на устройстве. Вы будете использовать обработчик события onKey () для обработки такого события.

onTouch ()

OnTouchListener ()

Это вызывается, когда пользователь нажимает клавишу, отпускает клавишу или любой жест движения на экране. Вы будете использовать обработчик события onTouch () для обработки такого события.

onMenuItemClick ()

OnMenuItemClickListener ()

Это вызывается, когда пользователь выбирает пункт меню. Вы будете использовать обработчик события onMenuItemClick () для обработки такого события.

onCreateContextMenu ()

onCreateContextMenuItemListener ()

Это вызывается при создании контекстного меню (в результате длительного «длительного щелчка»)

В составе класса View доступно гораздо больше прослушивателей событий, таких как OnHoverListener, OnDragListener и т. Д., Которые могут потребоваться для вашего приложения. Поэтому я рекомендую обратиться к официальной документации по разработке приложений для Android, если вы собираетесь разрабатывать сложные приложения.

Регистрация слушателей событий

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

  • Использование анонимного внутреннего класса

  • Класс Activity реализует интерфейс Listener.

  • Использование файла макета activity_main.xml для непосредственного указания обработчика событий.

В разделе ниже вы найдете подробные примеры всех трех сценариев —

Сенсорный режим

Пользователи могут взаимодействовать со своими устройствами, используя аппаратные клавиши или кнопки или касаясь экрана. Прикосновение к экрану переводит устройство в сенсорный режим. Затем пользователь может взаимодействовать с ним, касаясь виртуальных кнопок, изображений и т. Д. На экране. Вы можете проверить, находится ли устройство в сенсорном режиме, вызвав метод isInTouchMode () класса View.

Фокус

Вид или виджет обычно выделяется или отображает мигающий курсор, когда он находится в фокусе. Это означает, что он готов принять ввод от пользователя.

  • isFocusable () — возвращает true или false

  • isFocusableInTouchMode () — проверяет, можно ли сфокусировать вид в сенсорном режиме. (Вид может быть фокусируемым при использовании аппаратной клавиши, но не когда устройство находится в сенсорном режиме)

android:foucsUp="@=id/button_l"

onTouchEvent ()

public boolean onTouchEvent(motionEvent event){
switch(event.getAction()){
case TOUCH_DOWN:
Toast.makeText(this,"you have clicked down Touch button",Toast.LENTH_LONG).show();
break();
case TOUCH_UP:
Toast.makeText(this,"you have clicked up touch button",Toast.LENTH_LONG).show();
break;
case TOUCH_MOVE:
Toast.makeText(this,"you have clicked move touch button"Toast.LENTH_LONG).show();
break;
}
return super.onTouchEvent(event) ;
}

Примеры обработки событий

Регистрация прослушивателей событий с использованием анонимного внутреннего класса

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

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

Ниже приведены простые шаги, показывающие, как мы будем использовать отдельный класс Listener для регистрации и захвата события щелчка. Аналогичным образом вы можете реализовать свой слушатель для любого другого требуемого типа события.

Шаг Описание
1 Вы будете использовать Android studio IDE для создания Android-приложения и назовете его myapplication в пакете com.example.myapplication, как описано в главе « Пример Hello World» .
2 Измените файл src / MainActivity.java, чтобы добавить прослушиватели и обработчики событий щелчка для двух определенных кнопок.
3 Измените детальное содержимое файла res / layout / activity_main.xml, чтобы включить элементы управления пользовательского интерфейса Android.
4 Нет необходимости объявлять строковые константы по умолчанию. Студия Android позаботится о константах по умолчанию.
5 Запустите приложение, чтобы запустить эмулятор Android и проверить результат изменений, внесенных в приложение.

Ниже приводится содержимое измененного файла основного действия src / com.example.myapplication / MainActivity.java . Этот файл может включать каждый из основных методов жизненного цикла.

package com.example.myapplication;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
private ProgressDialog progress;
Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progress = new ProgressDialog(this);
b1=(Button)findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView txtView = (TextView) findViewById(R.id.textView);
txtView.setTextSize(25);
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView txtView = (TextView) findViewById(R.id.textView);
txtView.setTextSize(55);
}
});
}
}

Ниже будет содержимое файла res / layout / activity_main.xml

Здесь abc указывает на логотип tutorialspoint

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Event Handling "
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point "
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_above="@+id/imageButton"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Small font"
android:id="@+id/button"
android:layout_below="@+id/imageButton"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Font"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_alignRight="@+id/button"
android:layout_alignEnd="@+id/button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/textView"
android:layout_below="@+id/button2"
android:layout_centerHorizontal="true"
android:textSize="25dp" />
</RelativeLayout>

Ниже будет содержимое файла res / values ​​/ strings.xml для определения двух новых констант:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">myapplication</string>
</resources>

Ниже содержание по умолчанию AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.myapplication.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Попробуем запустить ваше приложение myapplication . Я предполагаю, что вы создали свой AVD при настройке среды. Чтобы запустить приложение из Android Studio, откройте один из файлов активности проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Android Studio устанавливает приложение на ваш AVD и запускает его, и, если с вашей настройкой и приложением все в порядке, оно отобразит следующее окно эмулятора —

Обработка событий Android

Теперь вы пытаетесь нажать на две кнопки одну за другой, и вы увидите, что шрифт текста Hello World изменится, что происходит из-за того, что для каждого события щелчка вызывается зарегистрированный метод обработчика события щелчка.

Упражнение

Я рекомендую попробовать написать разные обработчики событий для разных типов событий и понять точную разницу в разных типах событий и их обработке. События, связанные с виджетами меню, счетчика, средства выбора, немного отличаются, но они также основаны на тех же концепциях, которые описаны выше.

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare