Android imageview不显示URL中的图像
我需要从URL获取图像 这是非常容易接近的。这是我的一段代码Android imageview不显示URL中的图像,android,Android,我需要从URL获取图像 这是非常容易接近的。这是我的一段代码 public class MainActivity extends Activity { ImageView templateImage; Bitmap bm; String templateImageURL; byte[] binaryURL=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCre
public class MainActivity extends Activity {
ImageView templateImage;
Bitmap bm;
String templateImageURL;
byte[] binaryURL=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
templateImage=(ImageView)findViewById(R.id.templateImage);
templateImageURL="http://blogs.fco.gov.uk/peterbeckingham/files/2012/08/goa-beach.jpg";
DownloadImageTask dwnloadtask=new DownloadImageTask();
dwnloadtask.execute();
}
private class DownloadImageTask extends AsyncTask<Void, Void, Void> {
Drawable image;
protected Void doInBackground(Void... urls) {
image = ImageOperations(getApplicationContext(), templateImageURL, "image.jpg");
return null;
}
protected void onPostExecute(Void result) {
templateImage.setImageDrawable(image);
}
private Drawable ImageOperations(Context ctx, String url, String saveFilename) {
try {
InputStream is = (InputStream) fetch(url);
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public Object fetch(String address) throws MalformedURLException,IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
}
你为什么要做这种漫长的过程?当安卓系统给了我们一个很好的工作环境。请看下面我的答案,这将非常有用,并与康柏合作 我可以推荐另一种类似魅力的方式:Android查询 您可以从此处下载该jar文件:
这是非常快速和准确的,使用它你可以找到更多的功能,如动画加载时;如果需要,获取位图;等等。尝试下面的代码从url下载图像 此外,为了从url加载图像,我们首先需要将图像存储在临时位置,下载后应将其添加到
ImageView
。要创建临时文件,我们需要访问设备外部存储。将所需权限添加到AndroidManifest.xml
文件。不需要访问网络\u状态
权限
To access external storage required permission is – WRITE_EXTERNAL_STORAGE
仍然相同的10-04 11:16:06.059:W/System.err(19181):java.io.FileNotFoundException:10-04 11:16:06.059:W/System.err(19181):在libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)10-04 11:16:06.059:W/System.err(19181):在java.net.URL.openStream(URL.462)10-04 11:16:W/System.err(19181):在com.example.imageurldemo.MainActivity$DownloadImageTask.doInBackground(MainActivity.java:66)是的,我也做了同样的事情,我也在manifestI中添加了权限,我也尝试过这个问题AndroidQuery=new问题(这个问题);id(templateImage).image(“”,true,true,500,R.drawable.ic_启动器);但是没有用,正在显示启动器图像。请使用http提供完整的url。您的url在aQuery语法中是错误的。aQuery androidAQuery=new aQuery(此);id(templateImage).image(“”,true,true,500,R.drawable.ic_启动器);我已经输入了http,但是stackoverflow没有显示它。请不要将它放在后台。把它放在外面,然后再次检查语法。它的工作原理就像只需检查一次就可以了。你是想在你的imageview中显示这个显示为空的图像吗?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.imageurldemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.imageurldemo.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>
10-04 11:00:10.394: W/System.err(17887): java.io.FileNotFoundException: http://blogs.fco.gov.uk/peterbeckingham/files/2012/08/goa-beach.jpg
10-04 11:00:10.394: W/System.err(17887): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
10-04 11:00:10.394: W/System.err(17887): at java.net.URLConnection$DefaultContentHandler.getContent(URLConnection.java:1018)
10-04 11:00:10.394: W/System.err(17887): at java.net.URLConnection.getContent(URLConnection.java:199)
10-04 11:00:10.399: W/System.err(17887): at java.net.URL.getContent(URL.java:447)
10-04 11:00:10.399: W/System.err(17887): at com.example.imageurldemo.MainActivity$DownloadImageTask.fetch(MainActivity.java:105)
10-04 11:00:10.399: W/System.err(17887): at com.example.imageurldemo.MainActivity$DownloadImageTask.ImageOperations(MainActivity.java:91)
10-04 11:00:10.399: W/System.err(17887): at com.example.imageurldemo.MainActivity$DownloadImageTask.doInBackground(MainActivity.java:111)
10-04 11:00:10.399: W/System.err(17887): at com.example.imageurldemo.MainActivity$DownloadImageTask.doInBackground(MainActivity.java:1)
10-04 11:00:10.399: W/System.err(17887): at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-04 11:00:10.399: W/System.err(17887): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-04 11:00:10.399: W/System.err(17887): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-04 11:00:10.399: W/System.err(17887): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-04 11:00:10.399: W/System.err(17887): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-04 11:00:10.399: W/System.err(17887): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-04 11:00:10.399: W/System.err(17887): at java.lang.Thread.run(Thread.java:856)
AQuery androidAQuery=new AQuery(this);
androidAQuery.id(YOUR IMAGEVIEW).image(YOUR IMAGE TO LOAD, true, true, getDeviceWidth(), ANY DEFAULT IMAGE YOU WANT TO SHOW);
// DownloadImage AsyncTask
private class DownloadImage extends AsyncTask<String, Void, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(MainActivity.this);
// Set progressdialog title
mProgressDialog.setTitle("Downloading Image.... ");
// Set progressdialog message
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}
@Override
protected Bitmap doInBackground(String... URL) {
String imageURL = URL[0];
Bitmap bitmap = null;
try {
// Download Image from URL
InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
// Set the bitmap into ImageView
image.setImageBitmap(result);
// Close progressdialog
mProgressDialog.dismiss();
}
}
}
templateImageURL="http://blogs.fco.gov.uk/peterbeckingham/files/2012/08/goa-beach.jpg";
// Execute DownloadImage AsyncTask
new DownloadImage().execute(templateImageURL);
To access external storage required permission is – WRITE_EXTERNAL_STORAGE