Android programozási trükkök, javaslatok (nem csak eclipse)

A forrás állományban egy program sor gépelése közben, ha megnyomja a “.” -gombot hatására megjelenik az INTELLISENSE és megjeleníti a rendelkezésre álló azonosítókat, …

A mobil készülék leállhat átadhatja szerepet más programnak, de a vezérlés visszanyerése után ugyan ott folytassa a munkát, ha a programot felkészítsük erre a super.onCreate() használattal:

 public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState); 

}

Minden deklaráció és belső függvény hívás kerüljön az Acticity onCreate( ) funkciójába be.

Egyes objektum/elem elérése hasonló a JS HTML DOM olvasáshoz, itt is szükséges a ID ismerete.
pl.
JS használat:
var szoveg = document.getElementById(“get_szoveg”);

Android Java használat:
final EditText szoveg = (EditText)findViewById(R.id.get_szoveg);

 

Új aktivity létrehozásának szerkezete:

 Java (original Activity) :
Intent activityIntent = new Intent(this, NewActivity.class);
startActivity(activityIntent);

 

 XML (AndroidManifest.xml) :
<activity android:name=”.NewActivity”
android:label=”@string/some_app_name”>
<intent-filter>
<action android:name=”android.intent.action.VIEW” />
<!– VIEW : ez az aktivity jeleníti meg majd adatokat, de nem ez a program elsőnek induló tevékenysége. –>
<category android:name=”android.intent.category.DEFAULT”/>
<!– DEFAULT: ez a program alapértelmezett adatforrása bizonyos típusú adatoknál –>
</intent-filter>
</activity>
…..
<activity android:name=”.IntentFilter1Activity”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<!– MAIN : ez a progpam elsőnek induló része. –>
<category android:name=”android.intent.category.LAUNCHER”/>
<!– LAUNCHER: ez a program kap egy ikont a mobil programok képernyőn.–>
</intent-filter>
</activity>

Megjegyzés: Általános beállítás action.VIEW and category.DEFAULT
az Activity-knek.

 

Adat átadás (Bundle és Intent kapcsolás) létrehozás lehetőségeinek szerkezete:

 Java (Eredeti/már létező Activity használata)
Intent activityIntent = new Intent(this, NewActivity.class);
Bundle newActivityInfo = new Bundle();
newActivityInfo.putBlah(…); // putDouble, putString, …
activityIntent.putExtras(newActivityInfo);
startActivity(activityIntent);

 Java (új Activity-ben használata)
Intent intent = getIntent();
Bundle info = intent.getExtras();
if (info != null) { /* változó hívása: info.getBlah(…) */ }


Adat átadás (Bundle és Intent kapcsolás) változó átadási lehetőségeinek szerkezete:

 Bundle használattal:
Bundle newActivityInfo = new Bundle();
newActivityInfo.putDouble(“key1”, egyDouble);
newActivityInfo.putString(“key2”, egyString);

yourIntent.putExtras(newActivityInfo);

 Bundle nélkül inplicit
yourIntent.putExtra(“key1”, someDouble);
yourIntent.putExtra(“key2”, someString);

Figyelem : putExtras <> putExtra !!!
Példa az adat átvételre:
private void setInputsFromExtras() {
   Intent intent = getIntent();
   Bundle Info_be = intent.getExtras();
       if (Info_be != null) {
          double val1 = Info_be.getDouble(“valt_1”);
          String szoveg1 = Info_be.getString(“szoveg_1”);
         ….
     }
}

 

Aktivity meghívása URI-val szerkezet:

 Java (eredeti Activity)
Uri uri = Uri.parse(“foo://hu.mierdekel/baz”);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(activityIntent);

 XML (AndroidManifest.xml)
<intent-filter>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT”/>
<data android:scheme=”foo” android:host=”hu.mierdekel” />
</intent-filter>

 

A séma és a host (URI)regisztráció

URI
 progi1://hu.mierdekel/minta

intent-filter entry
 <data android:scheme=”progi1″ android:host=”hu.mierdekel” />

Megjegyzés: a “minta” rész egy plusz attributum a jobb olvasáshoz.
XML (manifest):
<data android:scheme=”progi1″ android:host=”hu.mierdekel” />

java:
public void show1(View clickedButton) {
Uri uri = Uri.parse(“progi1://hu.mierdekel/minta”);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtras (MieBundler.InfoBundle());
startActivity(intent);
}

 

Adat átadás URI címben módszer szerkezete:

 Java (eredeti Activity)
String address = “progi1://hu.mierdekel/minta?valt_1=xyz&…”;
Uri uri = Uri.parse(address);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(activityIntent);

 Java (Új Activity)
Uri uri = getIntent().getData();
String valt1 = uri.getQueryParameter(“valt_1”);

 XML (AndroidManifest.xml)
<intent-filter>
<action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT”/>
<data android:scheme=”progi1″ android:host=”hu.mierdekel” />
</intent-filter>

 

A MIME type (típus) regisztráció

URI

  •  content:// (Hivatkozás: MIME type)
  •  file:// (Hivatkozás: MIME type)

 

intent-filter entry

  •  <data android:mimeType=”some/type” />
  •  <data android:mimeType=”something/*” />

 

 

Előre deffiniált Action/URI kombinációk:

Intent.ACTION_CALL # tel:telefonszám # telefonszám felhívása
Intent.ACTION_DIAL # tel:telefonszám # telefonszám tárcsázása
Intent.ACTION_DIAL # voicemail: # voicemail tárcsázása
Intent.ACTION_VIEW # geo:lat,long # maps programal megjelenít (lat, long).
Intent.ACTION_VIEW # geo:0,0?q=cim # maps programal megjeleníti a cim-et
Intent.ACTION_VIEW # http://url # WEB böngészőben az url megnyítása
Intent.ACTION_VIEW # https://url # WEB böngészőben az url megnyítása
Intent.ACTION_WEB_SEARCH # szoveg # WEB böngészőben Google kereső ablak  megnyitása

 

Hivatkozási kapcsolatok 1:

res/layout/main.xml  általános hivatkozás javaban R.layout.main  

A használat megjelenítőben :   setContentView(R.layout.main)

Szövegre hivatkozás :       getString(R.string.string_name)

Vezérlő elemre hivatkozás : findViewById(R.id.some_id)

 

Hivatkozási kapcsolatok 2:

res/values/strings.xml : <string name=”g_text”>Hello!</string>

main.xml hivatkozás :    @string/g_text
Javahivatkozás:              getString(R.string.g_text)

 

Kivétel kezelés (saját kivétel osztály használatával)

void setSzamSzovegbol(String value) throws ConfigurationException {
       try {
          szam = Integer.parselnt(value);
       } catch (NumberFormatException e) {
            throw new ConfigurationException (“Szöveges szám ” + ” érték nem érvényes.”);
       }
 }

 

Általános programozási elvek:

Ha egy képernyőnél hosszabb (30-40 sor) függvények esetén érdemes átgondolni, hogy nem lehetne-e az adott metódust szétbontani anélkül, hogy sértenénk a kód integritását.

Az attribútumok definiálását érdemes az adott osztály legelején feltüntetni, hogy később is könnyedén megérthető legyen, mik tartoznak az adott osztályhoz.

Egy változó nevét érdemes annál beszédesebbre választani, minél nagyobb a láthatósága.

A public static final mezők végig nagybetűsek legyenek, és érdemes őket az osztály elején feltüntetni

A változók láthatóságát érdemes minél kisebbre hagyni, így a kód sokkal biztonságosabbá
válik. Javasolt, hogy a változók legbelsőbb (program) blokkban legyenek definiálva.

Az @Override annotációt akkor kell használni, ha az adott metódus egy ősosztályban lévő metódust definiál felül.

Naplózás használata szinjei (LogGat kimenetre írás)

• ERROR: komoly problémát szeretnénk megfigyelni, olyat, amelynek a
felhasználó által is látható következményei lehetnek, és nem lehet
újra előidézni például valamilyen adattörlés vagy más komoly lépés
elvégzése nélkül. A naplózása mindig megtörténik.
WARNING: komoly és váratlan jelenség történt, és ez nagy valószínűséggel
rekonstruálható adattörlés vagy más hasonló komolyságú lépés.
A naplózása is mindig megtörténik.
• INFORMATIVE:  több szempontból is érdekes esemény
történt,  de nem feltétlenül hibát jelent. A naplózása is mindig megtörténik.
• DEBUG: ha el szeretnénk tárolni, hogy milyen események történtek a készüléken, ez fontos lehet valamilyen hiba vagy jelenség felderítéséhez.  Ez a szint release fordítás esetén is naplózódik;

• VERBOSE:  csak debug fordításkor valósul meg, minden szöveg összeállítást

ezen a blokkon belül érdemes elhelyezni, hiszen ez nem kerül be a release fordításba, így nem terheli feleslegesen a kiadásra szánt verziót.

Például:

Log.d(“MIE_TAG”, “Esemény naplózása … “);

Log.e(“MIE_TAG”, “Error: 11 hiba … “);

 A függvény első paramétere egy egyedi TAG azonosító, amelyet érdemes egy konstansban tárolni, a második paraméter pedig az, amit naplózni szeretnénk.

 

Ikon méretek

  • MDPI : 48×48 px,
  • HDPI : 72×72 px,
  • XHDPI: 96×96 px,

Arány 2:3:4:6:8

Ikon                        használat Type
Icons                       ic_
Launcher icons      ic_launcher
Menu icons            ic_menu
Status bar icons    ic_stat_notify
Tab icons               ic_tab
Dialog icons           ic_dialog

 

Egy külső jar file android projecthez felvétele:

  • MIE Project -> jobb click -> Import -> Archive File -> mie_bovites.jar
  • MIE Project -> jobb click -> Properties -> Java Build Path -> Libraries -> Add Jar -> mie_bovites.jar
  • Szükséges lehet még a ‘Order and Export’ tab-fülön a jar listán a kívánt elem mellet pipa bekapcsolására is

 

 

Bővebben ismerkedőknek ajánlom kurzusainkat : Link

 

 

 

 

 

A bejegyzés kategóriája: Egyéb, Informatika, Oktatás
Kiemelt szavak: .
Közvetlen link.