J'essaie d'obtenir une image dans ImageView à partir du site Web mais l'image ne s'affiche pas de la sorte, Quel est le problème dans ce code? Il s'agit de l'URL de image .
C'est mon activité principale
ImageView i;
private Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
i=(ImageView)findViewById(R.id.ImageView1);
bitmap=GetBitmapfromUrl("http://test-dashboard1.seeloz.com/system/images/products_images/86/5454544114_1401886223?1401886223");
i.setImageBitmap(bitmap);
}
public Bitmap GetBitmapfromUrl(String scr) {
try {
URL url=new URL(scr);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input=connection.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(input);
return bmp;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}}
dans le fichier XML
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_marginLeft="85dp"
Android:layout_marginTop="179dp"
Android:src="@drawable/ic_launcher" />
</RelativeLayout>
mon manifeste Android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.image"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="17" />
<uses-permission Android:name="Android.permission.INTERNET"/>
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.example.image.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Faire du réseau IO dans le thread principal est mauvais. Mieux vaut éviter.
Aussi - votre accès aux ressources de l'URL est faux.
Utilisez quelque chose comme ceci à la place:
private Bitmap bmp;
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
InputStream in = new URL(IMAGE_URL).openStream();
bmp = BitmapFactory.decodeStream(in);
} catch (Exception e) {
// log error
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (bmp != null)
imageView.setImageBitmap(bmp);
}
}.execute();
C’est l’ancienne méthode de chargement des ressources d’URL dans l’affichage. Franchement, je n'ai pas écrit ce code dans un long time. Volley et Picasso le fait simplement beaucoup mieux Que moi, y compris un cache local transparent, la gestion de plusieurs threads de chargeur et Permettant des politiques efficaces de redimensionnement avant chargement. Tout sauf le café :)
Essayez-le avec Picasso . Cela devrait vous prendre presque une ligne complète de code et moins d'une minute pour le configurer.
Dans votre cas, ce serait:
Picasso.with(context).load(""http://imageurlgoeshere").into(i);
Si vous allez charger plusieurs images à partir d'URL dans votre application, vous devez absolument vous pencher sur:
"Universal Image Loader" de nostra13
C'est une bibliothèque géniale avec des tonnes de fonctionnalités pour afficher des images à partir d'URL, de la conversion en bitmaps, etc.
Une fois que vous avez inclus la classe et déclaré la configuration imageloader + imageloader, c’est aussi simple que cela:
imageLoader.displayImage("http://www.yoursite.com/my_picture.png", imageView);
Où imageView est l'imageView dans lequel vous souhaitez que l'image apparaisse.
Votre problème n'est pas dans le code mais avec le serveur. Essayez cet exemple d'URL et dites-moi si ça marche:
http://cdn.sstatic.net/stackoverflow/img/Apple-touch-icon.png