Autore Topic: Caricamento foto da galleria a imageView  (Letto 1539 volte)

Offline supervanzo

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Tab 2
  • Sistema operativo:
    Windows
Caricamento foto da galleria a imageView
« il: 03 Marzo 2014, 20:13:40 CET »
0
Salve,
sto realizzando una piccola app di prova in cui, dopo aver selezionato un'immagine dalla galleria, in un'altra activity la inserisco all'interno di una imageView, dove il Layout contiene altri botton/textView.
Il problema è che quando carico l'immagine della imageView, questa viene visualizzata in solitario, ovvero si vede solo l'immagine e il resto del layout è inesistente. Probabilmente ho sbagliato qualcosa nella visualizzazione finale, ma non trovo l'errore.

Bottone in cui seleziono la foto
Codice (Java): [Seleziona]
add_image.setOnClickListener(new View.OnClickListener() {
                       
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        // check the value state is null or not
                    Show_Toast("Scegliere la foto");   
                    Intent in = new Intent( Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI );
                    startActivityForResult(in, SELECT_IMAGE_CODE );
                   
                    }    
                });


Per memorizzare il path dell'immagine selezionata(fin qui tutto funziona in quanto il path, se printato è esatto)

Codice (Java): [Seleziona]
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
                if(requestCode==SELECT_IMAGE_CODE && resultCode==Activity.RESULT_OK){
                        Uri contentUri = data.getData();

                        String [] proj={MediaStore.Images.Media.DATA};
                        Cursor cursor = managedQuery( contentUri,
                                        proj,  // Which columns to return
                                        null,  // WHERE clause; which rows to return (all rows)
                                        null,  // WHERE clause selection arguments (none)
                                        null); // Order-by clause (ascending by name)
                        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                        cursor.moveToFirst();
                        filePath = cursor.getString(column_index);                      
                }
            super.onActivityResult(requestCode, resultCode, data);
    }

OnCreate dell'altra activity
Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_view);
               
                buttonNew = (Button) findViewById(R.id.again);         
                buttonChange = (Button) findViewById(R.id.change);     
                TextView textView= (TextView) findViewById(R.id.text);
                TextView textName= (TextView) findViewById(R.id.name);
               
                textName.setText("dice:");
                textView.setText("sentence");
                imageV = (ImageView) findViewById(R.id.imageV);
                setImage();


Metodo per convertire il path nell'immagine
Codice (Java): [Seleziona]
public void setImage(){
                if(path!=null){
                        File imgFile = new  File(path);
                        if(imgFile.exists()){
                            Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
                            //Drawable d = new BitmapDrawable(getResources(), myBitmap);
                            imageV.setImageBitmap(myBitmap);

                        }


Per quanto riguarda il layout:
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="#000000"
   android:orientation="vertical"
   android:scrollbars="vertical"
   android:textColor="#FFFFFF"
   android:gravity="center_horizontal">

    <ImageView
       android:id="@+id/imageV"
       android:layout_width="195dp"
       android:layout_height="wrap_content"
       android:layout_gravity="center" />
   
    <TextView
       android:layout_marginTop="25dip"
       android:id="@+id/name"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:textColor="#FFFFFF"
       android:textSize="24sp"
       android:gravity="center" />

    <TextView
       android:layout_marginTop="25dip"
       android:id="@+id/text"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:textColor="#FFFFFF"
       android:textSize="24sp"
       android:gravity="center" />

    <Button
       android:id="@+id/again"
       android:layout_width="250dp"
       android:layout_height="wrap_content"
       android:layout_marginTop="40dip"
       android:background="#088A08"
       android:text="@string/talk"
       android:textColor="#FFFFFF" />
</LinearLayout>


Altra nota dolente è che l'immagine unica al centro dello schermo a volta è girata rispetto all'originale.
« Ultima modifica: 03 Marzo 2014, 23:34:22 CET da supervanzo »

Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Re:Caricamento foto da galleria a imageView
« Risposta #1 il: 03 Marzo 2014, 22:04:22 CET »
0
Potresti postare anche l'xml del layout?

Inviato dal mio Nexus 7 utilizzando Tapatalk


Offline supervanzo

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Tab 2
  • Sistema operativo:
    Windows
Re:Caricamento foto da galleria a imageView
« Risposta #2 il: 03 Marzo 2014, 23:34:45 CET »
0
Potresti postare anche l'xml del layout?

Inviato dal mio Nexus 7 utilizzando Tapatalk

Si, ora l'ho aggiunto

Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Re:Caricamento foto da galleria a imageView
« Risposta #3 il: 03 Marzo 2014, 23:44:36 CET »
0
Beh, l'unica cosa che mi viene da pensare è che l'immagine si prende tutto lo spazio dato che hai messo wrap_content. Dovresti provare a ridimensionarla prima di posizionarla. Se ti basta un'anteprima anche tagliata dell'immagine dai un'occhiata alla classe ThumbnailUtils, altrimenti segui questa guida http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Inviato dal mio Nexus 5 utilizzando Tapatalk


Offline supervanzo

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Tab 2
  • Sistema operativo:
    Windows
Re:Caricamento foto da galleria a imageView
« Risposta #4 il: 04 Marzo 2014, 20:46:44 CET »
0
Beh, l'unica cosa che mi viene da pensare è che l'immagine si prende tutto lo spazio dato che hai messo wrap_content. Dovresti provare a ridimensionarla prima di posizionarla. Se ti basta un'anteprima anche tagliata dell'immagine dai un'occhiata alla classe ThumbnailUtils, altrimenti segui questa guida [url=http://developer.android.com/training/displaying-bitmaps/load-bitmap.html]Loading Large Bitmaps Efficiently | Android Developers [/URL]

Inviato dal mio Nexus 5 utilizzando Tapatalk

Oddio che erroraccio! hai ragione, ora funziona, era il wrap_content che faceva sballare tutto.

E invece per il problema dell'immagine ruotata come posso risolvere?

Offline ciccio

  • Utente junior
  • **
  • Post: 65
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Francesco Cervone
  • Sistema operativo:
    Mac OS X 10.9
Re:Caricamento foto da galleria a imageView
« Risposta #5 il: 04 Marzo 2014, 21:27:17 CET »
0
Facendo una ricerca su stackoverflow ho trovato questo, potrebbero esserti d'aiuto:
http://stackoverflow.com/questions/3647993/android-bitmaps-loaded-from-gallery-are-rotated-in-imageview
http://stackoverflow.com/questions/14066038/why-image-captured-using-camera-intent-gets-rotated-on-some-devices-in-android
Non sono esperto in questa cosa ma mi pare di capire che puoi prelevare questi metadati dell'immagine che ti permettono di capire se l'immagine deve essere ruotata oppure no.