如何在android中的imageview中从url网站获取图像
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24535924/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get image from url website in imageview in android
提问by user3798394
I am trying to get image in ImageView from url website but the image not show so, What is the wrong in this code? This is the url of the image.
我试图从 url 网站获取 ImageView 中的图像,但图像没有显示,这段代码有什么问题?这是的URL图像。
It is my Main Activity
这是我的主要活动
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;
}
}}
in the XML file
在 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>
my AndroidManifest
我的 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>
回答by Gilad Haimov
Doing network IO in the main thread is evil. Better to avoid.
在主线程中进行网络 IO 是邪恶的。最好避免。
Also - your url resource access is wrong.
另外 - 您的 url 资源访问是错误的。
Use something like this instead:
使用类似这样的东西:
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();
This is the 'old way' of loading url resources into display. Frankly speaking, I have not written such code in a longtime. Volleyand Picassosimply do it much better than me, including transparent local cache, multiple loader-threads management and enabling effective resize-before-load policies. All but coffee :)
这是将 url 资源加载到显示中的“旧方法”。坦白地说,我还没有在书面这样的代码很长的时间。Volley和Picasso在这方面做得比我好得多,包括透明的本地缓存、多加载线程管理和启用有效的加载前调整大小策略。除了咖啡 :)
回答by appoll
回答by Jonny07
If you're going to be loading multiple images from URL's in your app, it's definitely worth looking into:
如果您要从应用程序中的 URL 加载多个图像,则绝对值得研究:
nostra13's "Universal Image Loader"
It's an awesome library with tons of features to display images from URLs, cast to bitmaps, etc.
这是一个很棒的库,具有大量功能,可以显示来自 URL 的图像、转换为位图等。
Once you've included the class and declared the imageloader + imageloader configuration, its a simple as this:
一旦你包含了这个类并声明了 imageloader + imageloader 配置,它就很简单:
imageLoader.displayImage("http://www.yoursite.com/my_picture.png", imageView);
Where imageView is the imageView you would like the image to appear in.
其中 imageView 是您希望图像出现在其中的 imageView。
回答by Ilya Gazman
Your problem is not in code but with the server. Try this sample url and tell me if is it working:
您的问题不在于代码,而在于服务器。试试这个示例网址并告诉我它是否有效:
http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png
http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png