Per prima cosa, creo un tipo che contenga i tre membri Path, Etichetta e Categoria.
class JImmagine{
public String Path;
public String Etichetta;
public String Categoria;
}
Adesso inserisco un pulsante che prenda l'immagine dalla memoria e mi crei una bitmap da inserire in una ImageView in un thread separato mediante AsyncTask.Sull'Activity metto un Button e una ImageView e poi scrivo il codice...
public class MainActivity extends Activity {
Button button;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button1);
imageView=(ImageView)findViewById(R.id.imageView1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Uri.parse("content://media/external/images/media"));
startActivityForResult(intent,0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode==RESULT_OK){
BitmapFactory.Options opzioni=new BitmapFactory.Options();
opzioni.inJustDecodeBounds=true;
BitmapFactory.decodeFile(getPathFromUri(data.getData()), opzioni);
int fattore=1;
while(opzioni.outHeight/fattore>100 && opzioni.outWidth/fattore>100){
fattore*=2;
}
opzioni.inSampleSize=fattore;
opzioni.inJustDecodeBounds=false;
Bitmap bitmap=BitmapFactory.decodeFile(getPathFromUri(data.getData()));
imageView.setImageBitmap(bitmap);
}
}
private String getPathFromUri(Uri uri){
Cursor crs=getContentResolver().query(uri, null, null, null, null);
int indice=crs.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
crs.moveToFirst();
String s=crs.getString(indice);
crs.close();
return s;
}
Ecco, ho scritto di getto il codice che, a parte un errore di distrazione per non aver scritto crs.moveToFirst() mi comprometteva il risultato, ma l'ho individuato e corretto subito.Funziona.
Ora, però, devo usare la mia classe JImmagine.
Per farlo, devo però avere due controlli per l'immissione dei dati Etichetta e Categoria.
Su questi, ricordo di aver trovato alcuni suggerimenti per far sì che, anche in modalità Landscape, l'activity restasse visibile...
E quindi è il caso di ripassare il tutto, dando magari anche uno sguardo ad altri tipi di layout...
Nessun commento:
Posta un commento