我在寻找一个非常基本的功能。 我想设计一个应用程序,所有我希望它做的是从URL加载的图像。 我发现了几个问题和网站,但他们都似乎是老年人和过时,但我认为我遇到的代码链接到活动的main.xml为ImageView的问题。
你有我将不胜感激任何建议或链接,谢谢。
我在寻找一个非常基本的功能。 我想设计一个应用程序,所有我希望它做的是从URL加载的图像。 我发现了几个问题和网站,但他们都似乎是老年人和过时,但我认为我遇到的代码链接到活动的main.xml为ImageView的问题。
你有我将不胜感激任何建议或链接,谢谢。
在这里,这是我怎么在图像视图从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) {
}
要小心,不要忘了与周围尝试捕捉的代码(我已经做了,在这个代码)
或者您可以使用web视图从URL加载图像
WebView web = (WebView) findViewById(R.id.webView1);
web.loadUrl("Your Url");
如果你要加载从资产文件夹URL图像会像这样开头“文件:///android_asset/yourimage.jpg”
其他正常的互联网网址类似这样的“ 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://www.flat-e.com/flate5/wp-content/uploads/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);
}
}
}
在这里,在这个例子中,我创建的延伸在那里我已经做了我所有的网络操作的AsyncTask一个内部类MyTask。 确保添加的用途许可,您的清单文件。
希望这也适用于你。