Oppure

Loading
17/10/11 10:54
Dyango
ciao ragazzi come posso ridimensionare un immagine a tutto schermo conoscendo il link dell immagine?
aaa
17/10/11 13:20
TheKaneB
semplicemente crea una ImageView e settala a tutto schermo nella tua Activity con
ImageView image = new ImageView(this);
setContentView(image);
image.setImageURI( Uri.parse("example.com/…;) );

Se l'immagine risulta stretchata, puoi giocare con le opzioni del metodo setScaleType(), ad esempio impostando
image.setScaleType(ScaleType.CENTER_CROP);

che ingrandisce l'immagine tagliando i bordi per centrarla.

Comunque sulle reference di ImageView trovi tutto quello che ti serve

developer.android.com/reference/android/widget/…

PS: Il codice che ho scritto è solo un esempio poco ottimizzato. La cosa migliore sarebbe passare il puntatore alla ImageView ad un AsyncTask e caricare l'immagine in background, altrimenti blocchi il thread della UI finchè il download ed il decoding dell'immagine non sono completi, il chè potrebbe rallentare di qualche secondo il caricamento della Activity, o addirittura potrebbe far crashare l'applicazione in caso di problemi di rete.
Ultima modifica effettuata da TheKaneB 17/10/11 13:25
aaa
18/10/11 14:24
Dyango
grazie per la risposta ho provato inizialmente a usare la imageview come da te descritto ma compare sullo schermo vuota senza nessuna immagine il codeci è il seguente:
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class Prova4Activity extends Activity {
    /** Called when the activity is first created. */
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //image = (ImageView) findViewById (R.id.image);
        
        ImageView image = new ImageView(this);
        setContentView(image);
        image.setImageURI( Uri.parse("http://www.televideo.rai.it/televideo/pub/tt4web/Nazionale/16_9_page-103.png") );
        image.setScaleType(ScaleType.FIT_XY);
        
    }
}

ovviamente nel manifest ho inserito i permessi per accedere ad internet
Ultima modifica effettuata da Dyango 18/10/11 14:28
aaa
18/10/11 15:17
TheKaneB
il setContentView lo devi fare una volta sola, e poi manca la dichiarazione del layout.

dovrebbe essere una cosa tipo:
image.setLayoutParams(new ImageView.LayoutParams(MATCH_PARENT, MATCH_PARENT));
aaa
18/10/11 16:41
Dyango
Postato originariamente da TheKaneB:

il setContentView lo devi fare una volta sola, e poi manca la dichiarazione del layout.

dovrebbe essere una cosa tipo:
image.setLayoutParams(new ImageView.LayoutParams(MATCH_PARENT, MATCH_PARENT));

ho lasciato solo il setContentView(R.layout.main);

per i parametri del layout utilizzo il file main.xml contenente il seguente codice:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1">
    
    <ImageView android:id="@+id/image"
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"
     />
</LinearLayout>

uso API di livello 4 quindi non utlizzo il match_parent, continua a visualizzarmi l imageview vuota non capisco dove sia il problema.
aaa
18/10/11 19:56
TheKaneB
Lo stai testando sull'emulatore o su device?
Cosa dicono i log?

EDIT: prova a togliere il weightSum, oppure ad impostare il layout_weight dell'imageview a "1". Non ricordo, infatti, se di default il peso dei figli sia impostato a 1.0 oppure a 0.0. Nel secondo caso avresti una ImageView grande 0pixel in entrambe le direzioni.
Ultima modifica effettuata da TheKaneB 18/10/11 20:00
aaa
18/10/11 21:59
Dyango
Postato originariamente da TheKaneB:

Lo stai testando sull'emulatore o su device?
Cosa dicono i log?

EDIT: prova a togliere il weightSum, oppure ad impostare il layout_weight dell'imageview a "1". Non ricordo, infatti, se di default il peso dei figli sia impostato a 1.0 oppure a 0.0. Nel secondo caso avresti una ImageView grande 0pixel in entrambe le direzioni.

guardando i log genarati da logcat mi sono accorto che mentre faccio il debug riga per riga dopo l esecuzione della riga:
image.setImageURI( Uri.parse("http://www.televideo.rai.it/televideo/pub/tt4web/Nazionale/16_9_page-103.png") );

mi restituisce il seguente errore:
resolveUri failed on bad bitmap uri: televideo.rai.it/televideo/pub/tt4web/Nazionale/…
ho provato a cambiare link con immagini di diverse estensioni ma nn vanno neanche quelle

p.s: ovviamente ho anche provato i metodi da te consigliati prima ma come puoi intuire nn hanno dato risultati
aaa
19/10/11 9:05
TheKaneB
mmmmh.... prova a usare quest'altro metodo:

Crei un InputStream tramite il metodo

InputStream is = new URL( "mianonna.com/…; ).openStream();

poi crei una bitmap così:

Drawable immagine = Drawable.createFromStream(is);

e la imposti sul tuo widget con:

image.setImageDrawable( immagine );

In alternativa, potresti salvare l'InputStream su un file (dentro la directory restituita da cacheDir() ), e poi creare il Drawable usando il metodo createFromPath().

Io uso quest'ultimo metodo e funziona. Lo uso all'interno di un oggetto che funziona da cache, in modo da scaricare dalla rete una sola volta i file. Un thread secondario si occupa di cancellare i file della cache che sono scaduti (tramite un meccanismo complesso che per i tuoi scopi non è necessario).
aaa