Professional Documents
Culture Documents
FUNCTIONARE/ABORDARE A CODULUI
TWINKLE!
MAIN.CS
1-OnCreateView -Exacat ca la limbajul de programare C unde avem acel “main”,in android aceasta este functia.
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
SetTypeface.Normal.SetTypeFace(Context, tv1);
SetTypeface.Normal.SetTypeFace(Context, tv2);
SetTypeface.Italic.SetTypeFace(Context, tv3);
return v;
}
}
}
Toate acestea reprezinta interfata (la resources la layout) .Sunt imaginile care apar pe primul ecran.Sunt mai multe elemente
despre si pentru acestea :text ,imagine,dimensiune etc.
Fiecare din acele linii de cod are un anumit id c are ajuta la configurarea optima a imaginilor.
4-SetTypeface.Normal.SetTypeFace(Context, tv1);
SetTypeface.Normal.SetTypeFace(Context, tv2);
SetTypeface.Italic.SetTypeFace(Context, tv3);
Aici am schimbat fondul iar toata treaba asta este definita in dreapta in SetTypeface.
Aici fontul se svhimba foarte usor,cele subliniate reprezinta direct fodul care daca trebuie schimbat il modificam si gata.Se
incarca un fisier pentru a se putea folosii acest font.(Acesta se gaseste la ASSETS,In Font).
Aici am creat un eveniment adica un fel de buton,se poate observa asta si din liniile de cod de mai sus unde sunt interfatele.Adica
asta:
Cand apasam pe el ,verifica doua Check boxu-uri 1 si 2 iar functia asta ((main_container)Activity).setViewPager(2); desparte
aplicatia pe „activitati”
si deschide main_container.
MAIN_CONTAINER.CS
(este cel principal,de aici trebuie sa incepem)
1- RequestWindowFeature(Android.Views.WindowFeatures.NoTitle);
Functia asta daca nu este specificata o sa apara acea bara de sus unde sunt toate notificarile iar daca ea apare este un lucru destul
de deranjant care ne incurca iar aceste doua linii de cod configureaza toata aceasta treaba.Mai pe scurt ,facem asta pentru a avea
FULL SCREEN.
RequestWindowFeature(Android.Views.WindowFeatures.NoTitle);
Window.SetFlags(Android.Views.WindowManagerFlags.Fullscreen, Android.Views.WindowManagerFlags.Fullscreen);
2- SetContentView(Resource.Layout.main_container);
3- SupportActionBar.Hide();
Aceasta linie ascund acel Action bar adica aceasta:
4- viewPager = FindViewById<ViewPager>(Resource.Id.container);
Aici este alt element definit pentru View Pager pe care il gasim tot in acele layout.uri
Aici am folosit fragmente.Acestea sunt ca si Activitatile doar ca ele ne permit sa avem mai multe ecrane in aceeasi activitate:”
Fragments introduce modularity and reusability into your activity’s UI by allowing you
to divide the UI into discrete chunks”
Cele de la final sunt „mai multe ecrane” daca pot spune asa
7- Acel viewPager de la 6 conecteaza mai multe ecrane.adica te lasa sa treci de la un ecran la altul.Acesta are nevoie de un adaptor pe care
l.am definit in aceasta linie de cod:
viewPager.Adapter = mPagerAdapter;
8- setViewPager(0);
Aceasta linie de cod ne permite sa selectam care ecran sa apara,iar in cazul nostru va fi acel”Quiz”
QUIZ
Ca si exemplu:avem o lista pe care o scrollam.Noi ca sa punem mai multe lucruri in aceasta lista :imagine, text etc ;trebuie sa
creez un layout diferit iar ca sa folosim acest layout este aceasta functie/clasa inflater.
3- SetTypeface.Normal.SetTypeFace(Context, tv1);
SetTypeface.Normal.SetTypeFace(Context, tv2);
Aici am schimbat fotul, deoarece dar ar fi peste tot acelasi font nu ara arata bine.
4- List<string> hours = new List<string>() { "01", "02", "02", "03", "04", "05", "06", "07", "08", "09" };
hours.AddRange(Enumerable.Range(10,15).Select(s=>s.ToString()));
Aici am adaugat o lista si am mai adaugat si elementele din acea lista.Acea lista este folosita la inceputul aplicatiei pentru a putea
completa acest QUIZ dspre care vorbim.Avem doua mici intrebari in care selectam ora la care deobicei ne punem la somn si ora
la care deobicei ne trezim.Acele valori au fost introduse intocmai pentru a putea sa le selectam noi.
5-hours.AddRange(Enumerable.Range(10,15).Select(s=>s.ToString()));
Ce am selectat eu aici se numeste LINQ. „INQ în C# este folosit pentru a lucra cu accesul la date din surse precum obiecte, seturi de date,
SQL Server și XML. LINQ înseamnă Language Integrated Query. LINQ este un API de interogare a datelor cu sintaxe de interogare
asemănătoare SQL. LINQ oferă funcții pentru a interoga datele stocate în cache din tot felul de surse de date.”
6-ArrayAdapter;
ArrayAdapter aa = new ArrayAdapter(Context, Android.Resource.Layout.SimpleSpinnerDropDownItem, hours);
Acesta creeaza un fel de lista in care „manageriaza „ce se intampla in lista.Exact acelasi lucru face si in alte functii.
7-sp1.Adapter = aa;
sp2.Adapter = aa;
Aici am creat un eveniment pentru IV1 de click genereaza o notificare .E un eveniment de click care verifica daca cele doua
casute de la QUIZ sunt bifate si dupa schimba ecranul care se vede MAIN.CS(cel cu care am inceput aici descrierea ).
SLEEPPLAYER.CS
1-MediaPlayer mp = null;
Aceasta este functia din android care se ocupa de tot ce tine de muzica,adaugare muzica ,etc(tot ce tine de acest subiect)
2-SensorManager sensorManager;
Aceasta linie are indatorirea de a se ocupa ce tot ce tine de senzori.Am folosit accelerometrul
GetExternalFilesDir=Returneaza in android cand generez aplicatia mai multe foldere.Unul care e special pentru asa ceva si retureaza
fisierele care se termina in mp3.
6- (e.Sensor.Type==SensorType.Accelerometer)
{
ax=e.Values [0];
ay=e.Values [1];
az=e.Values [2];
7- mp = new MediaPlayer();
mp.SetDataSource(Context, URI);
mp.Prepare();
mp.SetDataSource(Context, URI)=Aici am selectat ce melodie sa cante.Acesta se leaga de ce am prezentat mai sus care este calea catre
melodie:
In cazul in care luam degetulsi muti de acea bara ramane acolo unde o lasam noi.
10- Thread=Un fir este un fir de execuție într-un program. Mașina virtuală Java permite unei aplicații să aibă mai multe fire de execuție
care rulează simultan.
new Thread(()=> {
while (true)
{
Activity.RunOnUiThread(() => {
if (mp != null && (string)playpause.Tag == "1")
{
int seekCurrentPos = mp.CurrentPosition / 1000;
playerBar.Progress = seekCurrentPos;
}
});
Thread.Sleep(1000);
11- }).Start();
playpause.Click += (object sender,EventArgs e) => {
if ((string)playpause.Tag == "0")
{
playpause.SetImageResource(Resource.Drawable.pausebtn);
playpause.Tag = "1";
mp.Start();
} else
{
playpause.SetImageResource(Resource.Drawable.playbtn);
playpause.Tag = "0";
mp.Pause();
Buton de play si pauza.Schimba imaginea in functie de ce stare are (acele doua bare la play si acel triunghi cand e pe pauza)
Tot ce aici sunt implementate ca in momentul cand isi schimba starea sa porneasca si /sau opreasca melodia
1-RequestWindowFeature(Android.Views.WindowFeatures.NoTitle);
Window.SetFlags(Android.Views.WindowManagerFlags.Fullscreen, Android.Views.WindowManagerFlags.Fullscreen);
3-SupportActionBar.Hide();
Ascunde action bar
4-mPagerAdapter.addFragment(new splash());
mPagerAdapter.addFragment(new login());
NOTIFICATIONS
nManager.Notify(0, nBuilder.Build());
}
Aici am implementat tot ce tine de notificariu si de generarea lor pe ecran.Am selectat ce iconita sa avem ,ce titlu si
textul.
PAGERADAPTOR