Programmare su Android in modalita grafica – 2

26 Gennaio 2009Un commento


  1. Viene creato l’oggetto “_bitmapcreator” (instanza della classe “LoadImage” che estende “BitMapFactory“) ci permettera’ di accedere ai file delle risorse ed agli assets. Con l’oggetto “_bitmapcreator” vengono creati due metodi ad esso correlati,  “createResourcesManager” e “createBitmap”;
  2. Sempre durante la creazione dell’oggetto “_view” viene eseguita la chiamata al metodo “bitmapLoader()“, interno alla classe stessa;
  3. La classe “bitmapLoader()” chiama il metodo “createResourcesManager”  e “createBitmap” (assegnando il valore di ritorno di quest’ultimo all’oggetto di tipo Bitmap “_ffbitmap“) dell’oggetto “_bitmapcreator” (instanza della classe LoadImage);
  4. Il metodo “createResourcesManager” esegue le seguenti operazioni:
  • crea l’oggetto AssetManager “_assmgr” con “_assmgr = _cont.getAssets()” ricanvadolo dal contesto dell’applicazione corrente;
  • crea l’ogggeto”_displaym” (parametri fisici del display), instanza della classe DisplayMetrics, con “_config = new Configuration()” e lo inzializza con valori di default (“_displaym.setToDefaults()“);
  • crea l’oggetto “_config” (gestore della configurazione del device), instanza della classe Configuration, con “_config = new Configuration()” e lo inzializza con valori di default (“_displaym.setToDefaults()“);
  • crea  l’oggetto “_res” (permette l’accesso alle risorse a disposizione dell’applicazione), instanza della classe Resources, con “_res = new Resources(_assmgr, _displaym, _config)” sfruttando i relativi oggetti precedentemente creati;
  • ricava l’ID della risorsa immagine che vorremmo visualizzare (file caricato nella cartella “res/drawable” del progetto con il nome “final_fantasy_xiii.jpg“), con “_resid = _res.getIdentifier(“final_fantasy_xiii”, _res.getResourceTypeName(R.drawable.final_fantasy_xiii), _res.getResourcePackageName(R.drawable.final_fantasy_xiii))“.
  1. La classe “bitmapLoader()” chiama il metodo “createBitmap” (assegnando il valore di ritorno di quest’ultimo all’oggetto di tipo Bitmap “_ffbitmap“) dell’oggetto “_bitmapcreator” (instanza della classe LoadImage);
  2. Il metodo “createBitmap” crea un oggetto “_ffbitmap” di tipo Bitmap con “_ffbitmap = decodeResource(_res, _resid)“, accedendo e decodificando il file salvato tra le risorse. Attenzione: l’oggetto “_ffbitmap” ivi creato, pur essendo dello stesso tipo ed avendo lo stesso nome di quello presente nella classe “View2“, e’ in verita’ differente (essendo stato definito come “private” in ambedue le classi);
  3. L’oggetto “_ffbitmap” viene ritornato al metodo chiamante con “eturn _ffbitmap“;
  4. La chiamata  “setContentView(_view)” manda in esecuzione e visualizza i risultati dell’elaborazione effettuata dall’oggetto “_view“, instanza della classe “View2” (che estende View). Qui di seguito potete vedere il codice della terza classe:

[java]

class LoadImage extends BitmapFactory {

private Context _cont;
private AssetManager _assmgr;
private Configuration _config;
private DisplayMetrics _displaym;
private Resources _res;
private int _resid;
private Bitmap _ffbitmap;

public LoadImage(Context context) {

_cont = context;

}

public void createResourcesManager() {

_assmgr = _cont.getAssets();

_displaym = new DisplayMetrics();
_displaym.setToDefaults();

_config = new Configuration();
_config.setToDefaults();

_res = new Resources(_assmgr, _displaym, _config);

_resid = _res.getIdentifier(“final_fantasy_xiii”, _res.getResourceTypeName(R.drawable.final_fantasy_xiii), _res.getResourcePackageName(R.drawable.final_fantasy_xiii));

}

public Bitmap createBitmap() {

_ffbitmap = decodeResource(_res, _resid);

return _ffbitmap;

}

}

[/java]

  1. A questo punto viene eseguito l’Override del metodo “onDraw” della classe “View2” (che estende la classe View) da parte dell’oggetto “_view” che crea il “Canvas” (lo sfondo) dove verra’ visualizzata l’immagine desiderata con:
  • _canvas.drawBitmap(_ffbitmap, 0, 0, _paint)“: stampa a video l’oggetto di tipo immagine definito alle coordinate (0,0), a partire dall’angolo in alto a sinistra.

Il risultato finale delle operazioni e’ il seguente:

screenshot

Ed ecco stampata la nostra immagine a video! Spero proprio che questo articolo vi piaccia.

Il sorgente lo potete scaricare qui: viewimage

Ciao ed alla prossima!;-)

Loading...
Social Media Auto Publish Powered By : XYZScripts.com