Autore Topic: Shared Preferences immagine  (Letto 3743 volte)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Shared Preferences immagine
« il: 08 Febbraio 2013, 17:33:19 CET »
0
Salve qualcuno mi sa dire per piacere come si salva un'immagine nelle shared preferences?
Grazie in anticipo per la risposta!

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Shared Preferences immagine
« Risposta #1 il: 08 Febbraio 2013, 17:43:51 CET »
+1
Non puoi.
Ma puoi salvarti dove si trova l'immagine come stringa (se salvata nel file system) o come intero (se presente nelle resources) e recuperarla all'occorrenza con la BitmapFactory.

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #2 il: 08 Febbraio 2013, 17:49:03 CET »
0
Grazie per la risposta io ho intenzione di salvare foto che sono prese dalla galleria della sdcard.
Però sinceramente siccome non l'ho mai fatto mica hai qualche esempio da potermi consigliare come guida?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Shared Preferences immagine
« Risposta #3 il: 08 Febbraio 2013, 17:59:38 CET »
+1
Grazie per la risposta io ho intenzione di salvare foto che sono prese dalla galleria della sdcard.
Però sinceramente siccome non l'ho mai fatto mica hai qualche esempio da potermi consigliare come guida?

Studiati > questo articolo <
Sembra fatto apposta per te, l'unica cosa che manca è il salvataggio del picturePath nelle SharedPreference  :-)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #4 il: 08 Febbraio 2013, 18:02:51 CET »
0
Ok grazie mille spero di riuscirci ^_^

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #5 il: 12 Febbraio 2013, 14:24:42 CET »
0
Ciao sakazaky ho vito quella guida che gentilmente mi hai postato però io già l'ho fatta quella parte che seleziono l'immaggine e la mostra nel layout ciò che non so fare è come salvare questa foto nelle shared preferences e richiamarla a mio piacimento nel layout che preferisco io

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Shared Preferences immagine
« Risposta #6 il: 13 Febbraio 2013, 19:38:34 CET »
0
Ciao sakazaky ho vito quella guida che gentilmente mi hai postato però io già l'ho fatta quella parte che seleziono l'immaggine e la mostra nel layout ciò che non so fare è come salvare questa foto nelle shared preferences e richiamarla a mio piacimento nel layout che preferisco io

Come suggerito da Sakazaki dovresti salvare l'indirizzo di dove si trova l'immagine e poi la richiami con una BitmapFactory.

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #7 il: 14 Febbraio 2013, 01:19:15 CET »
0
Quindi devo fare cosi per salvare la foto nelle shared preferences?

Codice (Java): [Seleziona]
 SharedPreferences myPref = getSharedPreferences(MY_PREFERENCES, 0);
                                Editor editor = myPref.edit();
                                editor.putString("FOTO", picturePath);
                                editor.commit();

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #8 il: 14 Febbraio 2013, 01:54:15 CET »
0
mentre nell'altra activity, quella in cui vado ad utilizzare l'immaggine salvata nelle sp ho fatto in questo modo ma non funziona

Codice (Java): [Seleziona]
private ImageView img_1;
        private final static String MY_PREFERENCES = "myPref";
       
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_visualizza);
            // TODO Auto-generated method stub
       
        img_1 = (ImageView)findViewById(R.id.imgView2);
       

    SharedPreferences visualizza = getSharedPreferences(MY_PREFERENCES, 0);
    String usaFoto = visualizza.getString("FOTO", null);
   
   
//  Bitmap photo = BitmapFactory.decodeFile(filePath);
   Bitmap photo_gallery = BitmapFactory.decodeFile(usaFoto);
   img_1.setImageBitmap(photo_gallery);
        }

}

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Shared Preferences immagine
« Risposta #9 il: 14 Febbraio 2013, 13:10:50 CET »
0
Che errore ti dà??

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #10 il: 14 Febbraio 2013, 13:17:52 CET »
0
Ma è corretto quanto scritto? Comunque quando vado alla seconda acticivity quella in cui mi deve visualizzare nuovamente la foto nel nuovo layout va in crasch
Mi da errore in questa riga
Codice (Java): [Seleziona]
Bitmap photo_gallery = BitmapFactory.decodeFile(usaFoto);

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Shared Preferences immagine
« Risposta #11 il: 14 Febbraio 2013, 14:04:44 CET »
0
Mi da errore in questa riga
Codice (Java): [Seleziona]
Bitmap photo_gallery = BitmapFactory.decodeFile(usaFoto);

Quale errore di preciso?
(ad un'occhiata molto rapida mi sembra formalmente corretto quanto hai scritto)

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #12 il: 14 Febbraio 2013, 14:19:49 CET »
0
Ho corretto mettendo i pedici a usafoto in questo modo


Codice (Java): [Seleziona]
   Bitmap photo_gallery = BitmapFactory.decodeFile("usaFoto");e pra quando clicco il bottone per andare al nuovo layout non crascha più però l'immagine in questo nuovo layout non me la mostra.
Sinceramente penso di non aver utilizzato bene le sharedpreferences non so tu che dici?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Shared Preferences immagine
« Risposta #13 il: 14 Febbraio 2013, 14:25:16 CET »
0
penso di non aver utilizzato bene le sharedpreferences non so tu che dici?

Magari sono cieco ma non vedo errori particolarmente eclatanti...
Cosa vale picturePath quando la imposti nelle preferences? e cosa vale usaFoto dopo che l'hai letta dalle preferences?

Offline moskino11

  • Utente normale
  • ***
  • Post: 179
  • Respect: 0
    • Mostra profilo
Re:Shared Preferences immagine
« Risposta #14 il: 14 Febbraio 2013, 14:33:09 CET »
0
nella prima classe io ho due bottoni , uno per caricare una foto e una volta selezionata me la mostra nel 1layout, dopodiché ho un secondo bottone che passa ad un secondo layout e mi visualizza nuovamente la foto nel secondo layout .
Il primo file java è il seguente



Codice (Java): [Seleziona]
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class ImageGalleryDemoActivity extends Activity {
        private final static String MY_PREFERENCES = "myPref";
        private Button vai;
       
       
        private static int RESULT_LOAD_IMAGE = 1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_gallery_demo);
        Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture);
       
       
        buttonLoadImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, RESULT_LOAD_IMAGE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();
            ImageView imageView = (ImageView) findViewById(R.id.imgView);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
           
       //qui utilizzo le sp per salvare il path della foto sottoforma di stringa
            SharedPreferences myPref = getSharedPreferences(MY_PREFERENCES, 0);
                                Editor editor = myPref.edit();
                                editor.putString("FOTO", picturePath);
                                editor.commit();
        }
    }
   
    public void vaiAvanti(View v) {
                Intent i = new Intent(this, Visualizza.class);
                this.startActivity(i);
        }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_image_gallery_demo, menu);
        return true;
    }
}



mentre il secondo file java ossia quello che richiama la foto utilizzando le sp e visualizza l'immagine è il seguente:


Codice (Java): [Seleziona]
public class Visualizza extends Activity {

        private ImageView img_1;
        private final static String MY_PREFERENCES = "myPref";
       
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_visualizza);
            // TODO Auto-generated method stub
       
        img_1 = (ImageView)findViewById(R.id.imgView2);
       

    SharedPreferences visualizza = getSharedPreferences(MY_PREFERENCES, 0);
    String usaFoto = visualizza.getString("FOTO", null);
   
   
//  Bitmap photo = BitmapFactory.decodeFile(filePath);
   Bitmap photo_gallery = BitmapFactory.decodeFile("usaFoto");
   img_1.setImageBitmap(photo_gallery);
        }

}