2013-06-12 7 views
8

Esiste la possibilità di accedere alla galleria del telefono, selezionare un'immagine casuale e visualizzarla nella vista? cioè, l'intero processo è stato eseguito senza l'intervento dell'utente, dovendo scegliere un'immagine o inviare un uri, ecc.visualizza un'immagine casuale dalla galleria del telefono e visualizza in visualizzazione

Grazie!

+1

Assicurati di premiare quelle in tempo per le loro risposte come Blackbelt di seguito. Altrimenti la cattiva reputazione andrà sprecata e nessuno trarrà vantaggio * sadface *. –

+0

Hai ragione, mi piacerà lo –

risposta

18

Il seguente frammento richiama il contenuto della galleria e inserisce tutti i percorsi dell'immagine all'interno di un elenco di array. Poi si sceglie a caso uno dei percorso all'interno del ArrayList e mettere come risorse per un ImageView

Handler handler = new Handler(); 

protected int counter = 0; 
private ImageView mImageView; 
private Bitmap currentBitmap = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.image); 
    mImageView = (ImageView) findViewById(R.id.imageView); 
    String[] projection = new String[]{ 
      MediaStore.Images.Media.DATA, 
    }; 

    Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
    Cursor cur = managedQuery(images, 
      projection, 
      "", 
      null, 
      "" 
    ); 

    final ArrayList<String> imagesPath = new ArrayList<String>(); 
    if (cur.moveToFirst()) { 

     int dataColumn = cur.getColumnIndex(
       MediaStore.Images.Media.DATA); 
     do { 
      imagesPath.add(cur.getString(dataColumn)); 
     } while (cur.moveToNext()); 
    } 
    cur.close(); 
    final Random random = new Random(); 
    final int count = imagesPath.size(); 
    handler.post(new Runnable() { 
     @Override 
     public void run() { 
      int number = random.nextInt(count); 
      String path = imagesPath.get(number); 
      if (currentBitmap != null) 
       currentBitmap.recycle(); 
       currentBitmap = BitmapFactory.decodeFile(path); 
      mImageView.setImageBitmap(currentBitmap); 
      handler.postDelayed(this, 1000); 
     } 
    }); 

} 
+0

snippet di codice. +1 – Raghunandan

+0

grazie @Raghunandan – Blackbelt

+0

Non ho ancora avuto il tempo di verificarlo, ma 8 upvotes dicono che il codice funziona, quindi la taglia è tua :) Molte molte grazie per l'aiuto! –