O Android carrega dinamicamente imagens de rede

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); 
    } 
}

 

Acho que você gosta

Origin www.cnblogs.com/huckleberry/p/12714463.html
Recomendado
Clasificación