URL WebサイトからImageViewで画像を取得しようとしていますが、画像が表示されません。このコードの何が問題になっていますか?これは image のURLです。
それが私の主な活動です
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;
}
}}
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>
私のAndroidManifest
<?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>
メインスレッドでネットワークIOを実行するのは悪です。避ける方がよいでしょう。
また、URLリソースへのアクセスが間違っています。
代わりに次のようなものを使用してください。
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();
これは、URLリソースをディスプレイにロードする「古い方法」です。率直に言って、私はそのようなコードをlong時間で書いていません。 Volley および Picasso 透過的なローカルキャッシュ、複数のローダースレッド管理、効果的なロード前のサイズ変更ポリシーの有効化など、私よりもはるかに優れています。コーヒー以外はすべて:)
ピカソ で試してみてください。コードはほぼ1行で、セットアップには1分もかかりません。
あなたの場合、それは次のようになります。
Picasso.with(context).load(""http://imageurlgoeshere").into(i);
アプリのURLから複数の画像を読み込む場合は、次のことを確認する価値があります。
これは、URLから画像を表示したり、ビットマップにキャストしたりするための多数の機能を備えた素晴らしいライブラリです。
クラスをインクルードし、imageloader + imageloader構成を宣言すると、次のように簡単になります。
imageLoader.displayImage("http://www.yoursite.com/my_picture.png", imageView);
ImageViewは、画像を表示するimageViewです。
問題はコードではなくサーバーにあります。このサンプルURLを試して、機能しているかどうかを教えてください。
http://cdn.sstatic.net/stackoverflow/img/Apple-touch-icon.png