interfata grafica

23
Interfata grafica Irina Presa [email protected]

Upload: garth-robinson

Post on 02-Jan-2016

104 views

Category:

Documents


3 download

DESCRIPTION

Irina Presa [email protected]. Interfata grafica. Cuprins. Views/Layouts Focus Evenimente Resurse Meniuri Ferestre Dialog Notificari. Views. Ce sunt ? - blocurile de baza ale interfetei - interactioneaza cu utilizatorii prin evenimente Unde le definim ? - direct in cod - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Interfata grafica

Interfata grafica

Irina Presa

[email protected]

Page 2: Interfata grafica

Cuprins Views/Layouts Focus Evenimente Resurse Meniuri Ferestre Dialog Notificari

Page 3: Interfata grafica

Views Ce sunt ?

- blocurile de baza ale interfetei

- interactioneaza cu utilizatorii prin evenimente

Unde le definim ?

- direct in cod

- intr-un fisier XML (resursa)

Ce definim ?

- culori, dimensiuni, coordonate

- obiecte grafice continute

- handlere pentru evenimente

Page 4: Interfata grafica
Page 5: Interfata grafica
Page 6: Interfata grafica

Custom Views Extindem clasa View sau pornim de la un View existent

- suprascriem metode/handlere de evenimente

- preluam atribute din resurse XML, sau le definim dinamic in cod

Compound Control

- grupam mai multe View-uri intr-un singur

- definim layout container

Page 7: Interfata grafica

Adapter View Ce este ?

- subclasa ViewGroup

- View-urile copii sunt determinate de un Adapter ce aduna date de un anumit tip

Utilizare

- pentru a afisa date intr-un layout

- ex: Gallery, ListView, Spinner, etc

Responsabilitati

- umple layoutul cu date

- trateaza selectiile utilizatorilor (OnItemClickListener)

Exemplu utilizare

- populeaza un spinner cu un vector de culori, sau o lista cu

contacte din agenda

Page 8: Interfata grafica

LayoutsOrganizare ierarhica, avand la baza un ViewGroup

AbsoluteLayout

- coordonatele exacte ale copiilor

RelativeLayout

- above, below, toLeftOf

FrameLayout

- frame per copil (top left)

LinearLayout

- orizontal/vertical

Definire coordonate (LayoutParams)

Prin numere

Fill parent

Wrap content(getMeasuredWidth/getWidth)

Page 9: Interfata grafica

Focus OnFocusChangeListener

View().requestFocus

Control next focus ( nextFocusDown, nextFocusLeft

nextFocusRight, nextFocusUp)

<LinearLayout

android:orientation="vertical" ..>

<Button android:id="@+id/top"

android:nextFocusUp="@+id/bottom" ... />

<Button android:id="@+id/bottom"

android:nextFocusDown="@+id/top" ... />

</LinearLayout>

Page 10: Interfata grafica

Evenimente

Subiect - Button.setOnClickListener(OnClickListener listener)

Observator - listener.onClick(View v)

Page 11: Interfata grafica

Resurse

res/anim - animatii frame-by-frame definite in XML

res/drawable - imagini png si jpg

res/layout - reprezentari XML ale obiectelor View

res/values - XML pentru siruri de caractere, culori, stiluri, dimensiuni si vectori

res/xml - fisiere xml definite de utilizator

res/raw - fisiere arbitrare si necompilate ce pot fi adaugate

Page 12: Interfata grafica

ResurseReferinte

Din cod (clasa R) :

- resursa cu id-ul review_image

(ImageView) findViewById(R.id.review_image);

- fisierul review_detail.xml din folderul res/layout

this.setContentView(R.layout.review_detail);

In XML :

- atribuire id

android:id="@+id/nume_id

- referire alta resursa

@id/nume_id

- referire valoare externa

@tip/nume_resursa (ex: @string/rating_label)

Page 13: Interfata grafica

ResurseValori externe

string.xml

<string> name="menu_get_reviews">Get reviews</string>

styles.xml

<style name="label">

<item name="android:textSize">18sp</item>

<item name="android:textColor">#ffffff</item>

</style>

arrays.xml

<array name="cuisines">

<item>American</item>

<item>Barbeque</item>

<item>French</item> <array>

Page 14: Interfata grafica

ResurseExemplu definire layout + view-uri (review_detail.xml)

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center_horizontal"

android:padding="10px"

android.setVerticalScrollBarEnabled="true" >

<ImageView android:id="@+id/review_image"

android:layout_width="100px"

android:layout_height="100px"

android:layout_marginLeft="10px"

android:layout_marginBottom="5px" />

Page 15: Interfata grafica

Resurse<TextView android:id="@+id/name_detail"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_below="@id/review_image"

android:layout_marginLeft="10px"

android:layout_marginBottom="5px"

style="@style/intro_blurb" />

<TextView android:id="@+id/rating_label_detail"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/name_detail"

android:layout_marginLeft="10px"

android:layout_marginBottom="5px"

style="@style/label"

android:text="@string/rating_label" />

Page 16: Interfata grafica

Meniuri Options Menu

- Icon menu (max 6, suporta iconuri)

- Expanded Menu

Context Menu

- meniu dinamic ce poate aparea la un click prelungit pe un View

Submenu

Page 17: Interfata grafica

Meniuri

Page 18: Interfata grafica

Meniuri

Cum le cream ?

Best Practice : Definim meniul intr-o resursa XML si il integram in cod

cu ajutorul unui MeniuInflater (Separam designul interfetei de codul aplicatiei)

XML : menu, item, group

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/new_game"

android:icon="@drawable/ic_new_game"

android:title="@string/new_game" />

<item android:id="@+id/quit"

android:icon="@drawable/ic_quit"

android:title="@string/quit" />

</menu>

Page 19: Interfata grafica

MeniuriCum le integram ?

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.game_menu, menu);

return true;

}

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.new_game:

newGame();

return true;

case R.id.quit:

quit();

return true;

}

addIntentOptions : adauga intenturi, pt a incarca activity-uri dinamic

Page 20: Interfata grafica

Ferestre Dialog AlertDialog

- 0-3 butoane, lista de elemente selectabile

ProgressDialog

- progress bar/wheel

DatePickerDialog

TimePickerDialog

Custom Dialog

- AlertDialog.Builder + LayoutInflater

Page 21: Interfata grafica

Notificari A Toast Notification

A Status Bar Notification

- remind-uri persistente, necesita raspunsul utilizatorului, icon in status bar

- configurabil pt notificari (sunet, vibratii, lumini)

A Dialog Notification

- notificari legate de Activity

Page 22: Interfata grafica

Status Bar Notification Utilizare

- pentru a primi notificari de la un serviciu ce ruleaza in background

Creare

- NotificationManager

String ns = Context.NOTIFICATION_SERVICE;

NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

- Instantiere

Notification notification = new Notification(icon, tickerText, when);

- Mesaj expandat + Intent

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

Notificare

mNotificationManager.notify(ID, notification);

Personalizare

defaults, vibrate, sounds, ledARGB

Page 23: Interfata grafica

Resurse[1] View-uri din Android API

[2] API Samples

Unlocking Android. A Developer's Guide

[1] http://developer.android.com/guide/tutorials/views/index.html

[2] http://developer.android.com/resources/samples/