Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
/
Лабораторна робота №3
з предмету:
«Мережні операційні системи»
на тему:
«Управління вводом/виводом та сенсорною підсистемою в ОС Android»
МЕТА: Оволодіти навичками програмування і управління вводом/виводом й сенсорною підсистемою в ОС Android.
Завдання: Програма контролю дотиків до сенсорного екрану, інтерфейс простої форми для вводу даних.
Перелік основних елементів інтерфейсу Android-пристрою
TextView - призначений для відображення тексту без можливості редагування його користувачем
RelativeLayout - для кожного елемента налаштовується його положення щодо інших елементів
LinearLayout - відображає View-елементи у вигляді одного рядка (якщо він Horizontal) або одного стовпчика (якщо він Vertical)
TableLayout - відображає елементи у вигляді таблиці, по рядках і стовпцях
AbsoluteLayout - для кожного елемента вказується явна позиція на екрані в системі координат (x, y)
ViewGroup - це Layout. Layout бувають різних типів і відповідаєють за те, як будуть розташовані їх дочірні View на екрані (таблицею, рядком, стовпцем ...)
Button - кнопка
CheckBox - чекбокс
Plain Text - найпростіший варіант текстового поля без наворотів.
EditText - це текстове поле для призначеного для користувача введення, яке використовується, якщо необхідно редагування тексту.
Лістинг тестової програми
AndroidBasicStarter.java
package com.badlogic.androidgames;import android.app.ListActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;public class AndroidBasicsStarter extends ListActivity { String tests[] = { "SingleTouchTest", "MultiTouchTest", "KeyTest" }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tests)); } @Override protected void onListItemClick(ListView list, View view, int position, long id) { super.onListItemClick(list, view, position, id); String testName = tests[position]; try { Class clazz = Class .forName("com.badlogic.androidgames." + testName); Intent intent = new Intent(this, clazz); startActivity(intent); } catch (ClassNotFoundException e) { e.printStackTrace(); } }}
KeyTest.java
package com.badlogic.androidgames;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.View;import android.view.View.OnKeyListener;import android.widget.EditText;import android.widget.TextView;public class KeyTest extends Activity { StringBuilder builder = new StringBuilder(); //TextView textView; EditText editText; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); editText = new EditText(this); setContentView(editText); }}
SingleTouchTest.java
package com.badlogic.androidgames;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.TextView;public class SingleTouchTest extends Activity implements OnTouchListener { StringBuilder builder = new StringBuilder(); TextView textView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); textView = new TextView(this); textView.setText("Touch and drag (one finger only)!"); textView.setOnTouchListener(this); setContentView(textView); } @Override public boolean onTouch(View v, MotionEvent event) { builder.setLength(0); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: builder.append("down, "); break; case MotionEvent.ACTION_MOVE: builder.append("move, "); break; case MotionEvent.ACTION_CANCEL: builder.append("cancle, "); break; case MotionEvent.ACTION_UP: builder.append("up, "); break; } builder.append(event.getX()); builder.append(", "); builder.append(event.getY()); String text = builder.toString(); Log.d("TouchTest", text); textView.setText(text); return true; }}
MultiTouchTest.java
package com.badlogic.androidgames;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.TextView;public class MultiTouchTest extends Activity implements OnTouchListener { StringBuilder builder = new StringBuilder(); TextView textView; float[] x = new float[10]; float[] y = new float[10]; boolean[] touched = new boolean[10]; private void updateTextView() { builder.setLength(0); for(int i = 0; i < 10; i++) { builder.append(touched[i]); builder.append(", "); builder.append(x[i]); builder.append(", "); builder.append(y[i]); builder.append("\n"); } textView.setText(builder.toString()); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); textView = new TextView(this); textView.setText("Touch and drag (multiple fingers supported)!"); textView.setOnTouchListener(this); setContentView(textView); } @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction() & MotionEvent.ACTION_MASK; int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; int pointerId = event.getPointerId(pointerIndex); switch (action) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_POINTER_DOWN: touched[pointerId] = true; x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_CANCEL: touched[pointerId] = false; x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); break; case MotionEvent.ACTION_MOVE: int pointerCount = event.getPointerCount(); for (int i = 0; i < pointerCount; i++) { pointerIndex = i; pointerId = event.getPointerId(pointerIndex); x[pointerId] = (int)event.getX(pointerIndex); y[pointerId] = (int)event.getY(pointerIndex); } break; } updateTextView(); return true; }}
Результат роботи програми
/
Рис.1
/
Рис.2
/
Рис.3
Висновок: Виконавши дану лабораторну роботу я оволодів навичками програмування і управління вводом/виводом й сенсорною підсистемою в ОС Android.