Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
这是完整的功能:
public void loadMapPreview () {
//start a background thread for networking
new Thread(new Runnable() {
public void run(){
try {
//download the drawable
final Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
//edit the view in the UI thread
imageView.post(new Runnable() {
public void run() {
imageView.setImageDrawable(drawable);
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
public class MainActivity extends Activity {
private AQuery aQuery;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aQuery = new AQuery(this);
aQuery.id(R.id.imageFromUrl).progress(R.id.pbrLoadImage).image("http://itechthereforeiam.com/wp-content/uploads/2013/11/android-gone-packing.jpg",true,true);
}
}
Note : Here I just implemented common method to load image from url/server but you can use various types of method which can be provided by "AndroidQuery"to load your image easily.
23 回答
来自Android developer:
确保您在
AndroidManifest.xml
中设置了以下权限才能访问互联网 .你必须先下载图像
然后使用Imageview.setImageBitmap将位图设置为ImageView
1. Picasso允许在您的应用程序中轻松加载图像 - 通常在一行代码中!
Use Gradle:
只需一行代码!
2. Glide适用于Android的图像加载和缓存库专注于平滑滚动
Use Gradle:
// For a simple view:
3. fresco是一个功能强大的系统,用于在Android应用程序中显示图像.Fresco负责图像加载和显示,因此您不必这样做 .
Getting Started with Fresco
我写了一个类来处理这个问题,因为它似乎是我各种项目中反复出现的需求:
https://github.com/koush/UrlImageViewHelper
无论如何,人们会将我的评论发布为答案 . 我发布了 .
谢谢 .
如果您基于按钮单击加载图像,则上面接受的答案很棒,但是如果您在新活动中执行此操作,则会将UI冻结一两秒 . 环顾四周,我发现一个简单的asynctask消除了这个问题 .
要使用asynctask,请在活动结束时添加此类:
并使用以下命令从onCreate()方法调用:
结果是一个快速加载的活动和一个图像视图,它会在一瞬间显示,具体取决于用户的网络速度 .
您还可以使用此LoadingImageView视图从URL加载图像:
http://blog.blundellapps.com/imageview-with-loading-spinner/
从该链接添加类文件后,您可以实例化URL图像视图:
在xml中:
在代码中:
并使用以下方法更新它
嗨,我有最简单的代码试试这个
main.xml中
试试这个
我最近发现了一个线程here,因为我必须对带有图像的列表视图做类似的事情,但原理很简单,因为你可以在那里显示的第一个示例类中读取(通过jleedev) . 你得到图像的输入流(来自网络)
然后将图像存储为Drawable,然后将其传递给ImageView(通过setImageDrawable) . 再从上面的代码片段看一下整个线程 .
这里有很多好消息...我最近发现了一个名为SmartImageView的类,到目前为止看起来效果非常好 . 非常容易合并和使用 .
http://loopj.com/android-smart-image-view/
https://github.com/loopj/android-smart-image-view
UPDATE :我最后写了一个blog post about this,所以请查看它以获得有关使用SmartImageView的帮助 .
2ND UPDATE :我现在总是使用Picasso(见上文)并强烈推荐它 . :)
对我来说这个任务最好的现代图书馆是Square的Picasso . 它允许通过URL使用单行将图像加载到ImageView:
这是一个迟到的回复,正如上面提到的
AsyncTask
将会和谷歌搜索后我找到了另一种方法来解决这个问题 .Drawable drawable = Drawable.createFromStream((InputStream) new URL("url").getContent(), "src");
imageView.setImageDrawable(drawable);
这是完整的功能:
不要忘记在
AndroidManifest.xml
中添加以下权限以访问互联网 .<uses-permission android:name="android.permission.INTERNET" />
我自己尝试了这个,但我还没有遇到任何问题 .
这会对你有所帮助......
定义imageview并将图像加载到其中.....
然后定义此方法:
一个简单而干净的方法是使用开源库Prime .
这段代码经过测试,完全正常 .
Working for imageView in any container , like listview grid view , normal layout
具有异常处理和异步任务的版本:
Try this way,hope this will help you to solve your problem.
在这里,我解释了如何使用“AndroidQuery”外部库以asyncTask方式从url / server加载图像,同时还将缓存加载的图像添加到设备文件或缓存区域 .
下载"AndroidQuery" library from here
将此jar复制/粘贴到项目lib文件夹,并将此库添加到项目构建路径
现在我展示了如何使用它的演示 .
activity_main.xml
MainActivity.java
Android Query可以为您处理更多内容(如缓存和加载进度) .
看看here .
我认为这是最好的方法 .