Oldalak

2012. november 10., szombat

Képernyő méretek

Képernyő méretek minimum küszöb értékei Android-on.

  • xlarge: legalább 960dp x 720dp
  • large: legalább 640dp x 480dp
  • normal: legalább 470dp x 320dp
  • small: legalább 426dp x 320dp
A dp - (density-independent pixel) sűrűség független pixel. Egy dp egy fizikai pixelnek felel meg egy 160 dpi-s képernyőn.

px = dp * (dpi / 160)

2012. november 3., szombat

Acitvity életciklus modellje



public class ExampleActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Most jön létre az Activity
    }
    @Override
    protected void onStart() {
        super.onStart();
        // Most válik láthatóvá az Activity
    }
    @Override
    protected void onResume() {
        super.onResume();
        // Láthatóvá vált az Activity
    }
    @Override
    protected void onPause() {
        super.onPause();
        // Másik Activity veszi át a focus-t
        // (ez az Activity most kerül „Paused” állapotba)
    }
    @Override
    protected void onStop() {
        super.onStop();
        // Az Activity már nem látható
        // (most már „Stopped” állapotba van)
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        // Az Activity meg fog semmisülni
    }
}

Gomb esemény kezelés megvalósítása XML oldalról

Az alkalmazás felhasználói felületét leíró XLM-ben lehetőség van a felületeken megjelenő gomb(ok)hoz eseménykezelőt definiálni. Ehhez az XML-ben a Button node-hoz hozzá kell adni android:onClick attribútumot, amiben annak a függvénynek a nevét kell megadni, ami majd kezelni fogja a gombra történő kattintás eseményét. Ezt a res->layout->activity_main.xml -ben kell kifejteni.


Majd a MainActivity osztályban létre kell hozni egy olyan metódust, ami a gomb(ok) eseménykezelését fogja végezni.

public class MainActivity extends Activity {
    
    ...
    public void onClick(View v) {
        if (v.getId()==R.id.btnHello)
            Toast.makeText(this, "Test", Toast.LENGTH_LONG).show();
    }
    ...

Menü kezelés megvalósítása XML erőforrásból

A programban a menüpontok elemeit az activity_main.xml állomány írja le. A Project Explorer-ben az erőforrás könyvtárban a menu könyvtárban található XML állomány írja le a programban megjelenő menü felépítését. (Az alábbi ábra szemlélteti, hogy hol kell keresni a menüt leíró XML erőforrás állományt a projektben.)

Az XML állományban egy darab menüpontot az alábbi XML node ír le:

Ahol az android:id tulajdonság a menü egyedi azonosítóját tartalmazza, az android:title tulajdonság a menü pont megjelenített nevét tartalmazza és végül az android:orderInCategory attribútum pedig a menü elem sorrendjére vonatkozó információt tartalmaz.

A menük használatához és a menüpontok kiválasztásának eseménykezeléséhez az XML erőforrás szerkesztésen kívül még szükséges némi kódolás is.
Ehhez a MainAcitvity osztályban kell felülbírálni az Acitvity ősosztálytól örökölt metódusokat:

  • public boolean onCreateOptionsMenu(Menu menu) metódust kell felülbírálni ahoz, hogy a program elndulásakor az XML erőforrásban leírt menüt létrehozza ("XML-ből felfújja") az a program.
  • public boolean onOptionsItemSelected(MenuItem item) metódust kell felülbírálni ahhoz, hogy a menüpontok kiválasztására mi történjen a programban.
Eclipse-ben lehetőség van a menüből kiválasztani, hogy az ősosztály melyik metódusait szeretnénk felülbírálni a saját osztályunkban.
Első lépésben a Project Explorer-ben keressük ki a  MainAcitvity.java osztályunkat és nyissuk meg ezt az osztályt a szerkesztőben. Ezután a MainActivity.java állomány szerkesztő ablakában jobb egér gombbal el kell navigálni az alábbi ábrán látható módon az Override/Implement methods menüpontba.

A fenti menüpont kiválasztása után az alábbi ablak jelenik meg:
A fenti listában ki kell keresni az onCreateOptionsMenu elemet és az onOptionsItemSelected elemet és ki kell jelölni, majd az OK gombbal jóvá kell hagyni a kiválasztást.
A jóváhagyás után az Eclipse elkészíti a MainAcitvity.java osztályban a két fenti metódus törzsét, amit fel kell tölteni az általunk végrehajtani kívánt kóddal.
Alább egy minta kódrészlet található a használatára:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
 getMenuInflater().inflate(R.menu.activity_main, menu);
 return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case R.id.menu_1:
  Toast.makeText(this, "Menu1", Toast.LENGTH_LONG).show();
  break;
 case R.id.menu_2:
  Toast.makeText(this, "Menu2", Toast.LENGTH_LONG).show();
  break;
 default:
  break;
 }
  
 return true;
}

A fenti menüpontok az alábbi módon jelennek meg különféle rendszereken:
Gingerbread 2.3.3

JellyBean 4.1.2

2012. november 2., péntek

Android Log osztály használata nyomkövetésre

Az alkalmazásban különféle nyomkövetési illetve hibakeresési céllal lehet használni az Android beépített Log osztályát erre a feladatra.

Beépített Log osztály naplózásra használható főbb metódusai

  • v(String, String) (verbose)
  • d(String, String) (debug)
  • i(String, String) (information)
  • w(String, String) (warning)
  • e(String, String) (error)
Kódrészlet a használatra:

btnGuess.setOnClickListener(new OnClickListener() {
   
 public void onClick(View v) {
    
  Log.d("TEST_DEBUG", "Guess gomb megnyomva debug");
    
  Log.i("TEST_INFO", "Guess gomb megnyomva Infó");
    
  Log.v("TEST_VERBOSE", "Guess gomb megnyomva debug verbose");
    
  Log.e("TEST_ERROR", "Guess gomb megnyomva debug error");
  
  // további kód 
  }
 });

Eclipse-ben a LogCat ablakban az alábbi üzenetek jelennek meg a btnGuess gomb megnyomására:


"could not open avd config file config.ini..." hibaüzenet javítása

Ha az Android SDK-t olyan felhasználói profil alá telepítettük, ahol a felhasználói profil ékezetes karaktereket vagy szóközt tartalmaz, abban az esetben az AVD Manager-ben létrehozott emulátor indítása után az alábbi hibaüzenetbe ütközhetünk:

PANIC: Could not open AVD config file: C:\Users\Ékezetes_felhasználónév\.android\avd\Teszt.avd/config.ini

Ezt úgy lehet kiküszöbölni, hogy egy új környezeti változót kell létrehozni ANDROID_SDK_HOME névvel és a környezeti változóhoz az android SDK gyökér könyvtárának útvonalát kell megadni.
Ezt Win7 alatt az alábbi módon lehet beállítani:
Start menü->Vezérlőpult->Rendszer és Biztonság->Rendszer->Speciális rendszer beállítások
A megnyíló ablakban a Környezeti változók gombra kell kattintani (1. lépés).

Majd a megnyíló Környezeti változók ablakban az Új... feliratú gombra kell kattintani (2. lépés).
A Rendszerváltozó szerkesztése ablakba a változó neve mezőbe az ANDROID_SDK_HOME értéket kell beírni. A változó értékének pedig azt az útvonalat kell beírni, ahová az Android SDK van feltelepítve. A fenti példában ez a c:\android-sdk útvonal. A fenti beállítás után ha elindítjuk az AVD Manager programot, akkor az alábbi ábrán lévő útvonalat kell látnunk.

Eclipse gyorsbillentyűk

Ctrl+click: navigálás a kódban
Ctrl+space: intelli sense és „kódgenerálás” ha egy felüldefiniálandó metódus első pár betűjét ütjük le, majd Enter-t nyomunk
Alt+Shift+R: változó átnevezése (mindenhol)
Ctrl+Shift+T: típus keresése
F3: deklaráció megnyitása függvényen, osztályon
Ctrl+Alt+H: hívás hierarchia megjelenítése
Ctrl+Shift+O: import fix
Ctrl+Shift+F: forrás formázása
Ctrl+F6: forrásfájlok közti váltás
Ctrl+Shift+G: használat listázása
Ctrl+Shift+L: hotkey lista
Ctrl+PageUP/PageDown: Navigálás a megnyitott állományok között
Alt+Bal/Jobb: Ugrás a kód korábban használt szakaszára
Ctrl+1: Eclipse automatikus javaslat az adott helyen
Ctrl+Shift+R: erőforrás keresés
Alt+Shift+A, majd S: Szöveges konstans kihelyezése a szöveges értékeket tartalmazó Android strings.xml állományba