Consola de mesaje (LogCat)
Afiseaza mesajele transmise din aplicatii:
Sistem
Utilizator
Tipuri de mesaje:
Avertizare (w)
Depanare (d)
Eroare (e)
Informare (i)
Informare detaliata (v)
Clasa [Link]
Metode statice aosicate tipurilor de mesaje:
e();
w();
i();
d();
v();
wtf();
Parametri:
Identificator sursa mesaj (String)
o Numele clasei aplicatiei
o Posibilitate de filtrare
Mesajul care va fi afisat (String)
Metoda statica generala:
Println();
In plus, primul parametru include tipul mesajului: [Link], [Link] etc
Componente de baza ale aplicatiilor Android:
Activity (clasa de baza [Link])
Servicii (clasa de baza Service)
- Rutine care ruleaza in paralel cu firul principal
- Nu prezinta interfata grafica
- Permit derularea unor actiuni in fundal fara a bloca firul principal de executie
sau interactiunea cu aplicatiile
Furnizori de continut (clasa de baza ContentProvider)
- Suport pentru partajarea datelor intre aplicatii
- Datele partajate sunt stocate in diferite surse de date (fisiere, bd etc)
- Pun la dispozitie o modalitate standard pt accesul la date si actualizarea
acestora
- Accesul se realizeaza printr-un URL de forma content://
Receptori de mesaje (clasa de baza BroadcastReceiver)
- Mesaje (clasa de baza Intent)
- Pt activarea componentelor se utilizeaza mesaje asincrone incapsulate in obiecte
de tip Intent
- Invocare componente: deschidere navigator, initiere aplicatie apeluri telefonice,
afisarea hartii la o anumita pozitie geografica etc
- Comunicare intre component
Receptionarea evenimentelor:
-
Aplicatiile pot reactiona la aparitia unor evenimente la nivelul sistemului prin
utilizarea claselor din BroadcastReceiver, Ex: apel telefonic, modificarea
nivelului bateriei etc
Acestea nu prezinta interfata grafica
O aplicatie poate include mai multe component pt receptionarea de evenimente
Structura unui proiect
Fisier de configurare
Resurse
Siruri de caractere, massive,culori, stiluri
Fisiere sursa
Informatii pachet
Structura fisierului de configurare :
Atribute aplicatie
Component aplicatie
Tipuri de layout:
LinearLayout
RelativeLayout
GridLayout
Functionalitatea aplicatiei:
Nume aplicatie
TextView
Button
RelativeLayout
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
Fisier de resurse
<TextView android:text="@string/hello_world_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_centerHorizontal="true"
android:id="@+id/firstTextView" />
<Button
Pt a putea fi referit si folosit in cod
Folosit pentru FONT
Orientarea textView-ului
in cadrul aplicatiei
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/firstButton_textButton"
android:id="@+id/firstButton"
android:layout_below="@+id/firstTextView"
android:layout_centerHorizontal="true"
android:layout_marginTop="53dp"
/>
</RelativeLayout>
Diferenta intre wrap_content si match_parent:
TextView-ul Hello world va ocupa in
cadrul layout-ului atat spatiu cat are
nevoie pentru a incapea textul.
Hello world
Hello Again
Daca in pentru TextView-ul acesta avem:
android:layout_width="match_parent"
Good bye!
android:layout_height="wrap_content"
atunci acesta va ocupa tot spatiul
pe orizontala si doar cat are nevoie
pt a incapea textul pe verticala
android:layout_width="match_parent"
android:layout_height="match_content"
Ocupa tot spatiul ramas
Fisier de resurse - [Link]
<resources>
<string name="app_name">Introduction</string>
Ce apare pe ecran
<string name="hello_world_TextView">Hello Again!</string>
<string name="firstButton_textButton">You Clicked</string>
</resources>
android:text="@string/hello_world_TextView"
Fisier de
resurse(destinatie)
[Link]
package [Link];
import
import
import
import
import
[Link];
[Link];
[Link];
[Link];
[Link];
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
Interfata aplicatiei
setContentView([Link].activity_main);
//initializare controale folosite
Pentru folosirea controalelor din interfata (fisier xml) trebuie mai intai gasite (folosind
findViewById si id-ul controlului respectiv ) si Initializate (folosind instante ale acestora , ex:
Button button => button e o instanta a controlului Button.
final TextView tv = (TextView)findViewById([Link]);
Button button = (Button)findViewById([Link]);
Pentru a face butonul You Clicked sa fie responsive, folosim metoda setOnClickListener
[Link](new [Link]() {
@Override
public void onClick(View v) {
[Link]("You Clicked");
}
});
}
Unde este?
}
findViewById([Link]);
Unde il memoram pentru a putea fi folosit?
Folosirea controalelor:
Button button =(Button)findViewById([Link]);
Ce metoda necesita pentru a fi responsive?
[Link](new
[Link]() {
@Override
public void onClick(View v) {
}
});
You Clicked
}
Ce se intampla la apasarea butonului?
[Link]("You Clicked");