Android应用程序显示图像来自URL

我正在寻找一个非常基本的function。 我试图devise一个应用程序,我想要它做的是从URL加载图像。 我发现了几个问题和网站,但是它们都显得比较陈旧,但是我认为我遇到的问题是将代码链接到ImageView的main.xml文件。

您有任何build议或链接,我将不胜感激,谢谢。

Related of "Android应用程序显示图像来自URL"

在这里,这是我在图像视图中显示来自url的图像
你必须从主线程以外的线程调用这个代码

ImageView img = (ImageView) findViewById(R.id.imageView1); try { URL url = new URL("Your URL"); //try this url = "http://0.tqn.com/d/webclipart/1/0/5/l/4/floral-icon-5.jpg" HttpGet httpRequest = null; httpRequest = new HttpGet(url.toURI()); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = (HttpResponse) httpclient .execute(httpRequest); HttpEntity entity = response.getEntity(); BufferedHttpEntity b_entity = new BufferedHttpEntity(entity); InputStream input = b_entity.getContent(); Bitmap bitmap = BitmapFactory.decodeStream(input); img.setImageBitmap(bitmap); } catch (Exception ex) { } 

请注意,不要忘记用try catch来包围代码(我已经在这个代码中完成了)

或者您可以使用webview从url加载图片

 WebView web = (WebView) findViewById(R.id.webView1); web.loadUrl("Your Url"); 

如果你想从资源文件夹中加载图片,url会像这样开始“file:///android_asset/yourimage.jpg”
其他正常的互联网url就像这样“ http://0.tqn.com/d/webclipart/1/0/5/l/4/floral-icon-5.jpg

希望这对你有好处

有一个名为imageloader的开源库。 它被广泛使用,你可以直接使用它或者做类似的代码。

https://github.com/nostra13/Android-Universal-Image-Loader

你可以把图像和你的PHP端转换成base64,然后在Android端解码成一个图像。

下载镜像的最佳做法是在后台线程完成,以便它不会中断主线程,然后根据需要更新用户界面。

公共类MainActivity扩展AppCompatActivity {

 FrameLayout frameLayout; ImageView imageView; ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); frameLayout= (FrameLayout) findViewById(R.id.containerlayout); imageView= (ImageView) findViewById(R.id.imageView); progressBar= (ProgressBar) findViewById(R.id.progressBar); String url="http://img.androidcookie.com/android/cover-960x857.jpg"; MyTask myTask= new MyTask(); myTask.execute(url); } class MyTask extends AsyncTask<String, Void, Bitmap> { @Override protected void onPreExecute() { progressBar.setVisibility(View.VISIBLE); } @Override protected Bitmap doInBackground(String... voids) { Bitmap bitmap=null; try { URL url =new URL(voids[0]); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); InputStream inputStream= connection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); } catch (IOException e) { e.printStackTrace(); } return bitmap; } @Override protected void onPostExecute(Bitmap bitmap) { progressBar.setVisibility(View.GONE); imageView.setImageBitmap(bitmap); } } 

}

在这里,在这个例子中,我创build了一个内部类MyTask,它扩展了AsyncTask,完成了我所有的networking操作。 确保在清单文件中添加使用权限。

希望这也适用于你。