Carregar dinamicamente imagens de rede
Como o WebView, carregar imagens de rede requer permissões de acesso à rede:
<permissão de uso android: name = " android.permission.INTERNET " />
O princípio de carregamento de imagens: obtenha imagens de acordo com os endereços das figuras e converta imagens do fluxo de arquivos em objetos de bitmap.
O processo de carregamento da imagem deve ser processado de forma assíncrona, caso contrário, é fácil para o aplicativo não responder (o aplicativo não está respondendo).
Crie uma classe LoadImagesTask, herdada de AsyncTask:
importar android.graphics.Bitmap; importar android.graphics.BitmapFactory; importar android.os.AsyncTask; importar android.widget.ImageView; importar java.io.IOException; importar java.io.InputStream; importar java.net.HttpURLConnection; importar java.net.MalformedURLException; importar java.net.URL; classe pública LoadImagesTask estende AsyncTask <String, Void, Bitmap> { private ImageView imageView; public LoadImagesTask (ImageView imageView) { this .imageView = imageView; } @Override Bitmap protegido doInBackground (String ... params ) { URL imageUrl = null ; Bitmap bitmap = nulo ; InputStream inputStream = nulo ; tente { imageUrl = novo URL ( params [ 0 ]); HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection (); conn.setDoInput ( true ); conn.connect (); inputStream = conn.getInputStream (); bitmap =BitmapFactory.decodeStream (inputStream); inputStream.close (); } catch (MalformedURLException e) { e.printStackTrace (); } catch (IOException e) { e.printStackTrace (); } retornar bitmap; } @Override protegido vazio OnPostExecute (bitmap bitmap) { imageView.setImageBitmap (mapa de bits); } }
O processamento assíncrono é a comunicação entre o encadeamento principal e o encadeamento filho.O encadeamento filho processa a tarefa demorada e retorna o resultado ao encadeamento principal. O AsyncTask envolve esse processo, não explicarei aqui.
Por fim, teste em MainActivity, o código é o seguinte:
classe pública MainActivity estende AppCompatActivity { private ImageView imageView; @Override void onCreate protegido (pacote salvoInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.web_image); String http = " http://img4.duitang.com/ uploads / item / " + " 201403/27 / 20140327194516_SaKBX.png " ; ImageView imageView = (ImageView) findViewById (R.id.image_view); // Inicie uma tarefa assíncrona, carregue uma imagem de rede nova LoadImagesTask (imageView) .execute (http); } }