当前位置:天才代写 > tutorial > 安卓教程 > andriod 读取网络图片

andriod 读取网络图片

2021-02-02 15:23 星期二 所属: 安卓教程 浏览:541

 Android手机,大家常见ImageView表明照片,大家此章获得网络图片并表明在ImageView中。

一、设计方案页面

  1、合理布局文档

  开启res/layout/activity_main.xml文件。
  键入下列编码:

[html] view plain copy

 
  1. <?xml version=“1.0” encoding=“utf-8”?>   
  2. <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”   
  3. android:orientation=“vertical”   
  4. android:layout_width=“match_parent”   
  5. android:layout_height=“match_parent” >  
  6.   
  7.     <ImageView  
  8.         android:id=“@ id/imagephoto”  
  9.         android:layout_width=“wrap_content”  
  10.         android:layout_height=“wrap_content” />  
  11.   
  12. </LinearLayout>   

 

二、体系文件

  开启“src/com.genwoxue.networkphoto/MainActivity.java”文档。
  随后键入下列编码:

[java] view plain copy

 
  1. package com.genwoxue.networkphoto;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.net.HttpURLConnection;  
  6. import java.net.MalformedURLException;  
  7. import java.net.URL;  
  8. import android.app.Activity;  
  9. import android.graphics.Bitmap;  
  10. import android.graphics.BitmapFactory;  
  11. import android.os.AsyncTask;  
  12. import android.os.Bundle;  
  13. import android.widget.ImageView;  
  14.   
  15. public class MainActivity extends Activity {  
  16.   
  17.     private ImageView imView;   
  18.     @Override   
  19.     public void onCreate(Bundle savedInstanceState) {    
  20.         super.onCreate(savedInstanceState);    
  21.         setContentView(R.layout.activity_main);    
  22.           
  23.         imView = (ImageView) findViewById(R.id.imagephoto);    
  24.         String imageUrl = “https://uhomework.com/wp-content/uploads/2021/02/20210201100040-6017d14868220.gif”;    
  25.           
  26.         new NetworkPhoto().execute(imageUrl);  
  27.     }  
  28.   
  29.     /* 四个流程: 
  30.      * (1)onPreExecute(),实行预备处理,它运作于UI进程, 
  31.      * 能够为后台任务做一些准备工作,例如绘图一个时间轴控制。 
  32.      * (2)doInBackground(Params…),后台进程实行的实际测算在这儿完成, 
  33.      * doInBackground(Params…)是AsyncTask的重要,此方式务必轻载。 
  34.      * 在这个方式内能够应用 publishProgress(Progress…)更改当今的进展值。 
  35.      * (3)onProgressUpdate(Progress…),运作于UI进程。假如 
  36.      * 在doInBackground(Params…) 中应用了publishProgress(Progress…),便会 
  37.      * 开启这一方式。在这儿能够对时间轴控制依据进展值作出实际的回应。 
  38.      * (4)onPostExecute(Result),运作于UI进程,能够对后台任务的結果作出解决,結果 
  39.      * 便是doInBackground(Params…)的返回值。此方式还要常常轻载,假如Result为 
  40.      * null说明后台任务沒有进行(被撤消或是发现异常)。    *  
  41.      */  
  42.       
  43.     //本实例大家仅应用了(2)和(4)  
  44.     class NetworkPhoto extends AsyncTask<String, Integer, Bitmap> {   
  45.         public NetworkPhoto() {  
  46.         }  
  47.       
  48.         //doInBackground(Params…),后台进程实行的实际测算在这儿完成,是AsyncTask的重要,此方式务必轻载。  
  49.         @Override   
  50.         protected Bitmap doInBackground(String… urls) {    
  51.             URL url = null;    
  52.             Bitmap bitmap = null;    
  53.             HttpURLConnection conn=null;    
  54.             InputStream is=null;    
  55.           
  56.             try {     
  57.                 url = new URL(urls[0]);    
  58.             } catch (MalformedURLException e) {    
  59.                 e.printStackTrace();    
  60.             }  
  61.                   
  62.             try {     
  63.                 conn = (HttpURLConnection) url.openConnection();     
  64.                 conn.setDoInput(true);     
  65.                 conn.connect();     
  66.                 is = conn.getInputStream();     
  67.                 bitmap = BitmapFactory.decodeStream(is);     
  68.                 is.close();    
  69.             } catch (IOException e) {     
  70.                 e.printStackTrace();    
  71.             } finally  {     
  72.                 if(conn!=null){      
  73.                     conn.disconnect();      
  74.                     conn=null;     
  75.                 }     
  76.               
  77.                 if(is!=null)   {      
  78.                     try {  
  79.                         is.close();  
  80.                     } catch (IOException e) {  
  81.                       e.printStackTrace();  
  82.                     }      
  83.                     is=null;   
  84.                 }  
  85.             }  
  86.         return bitmap;  
  87.     }  
  88.   
  89.         //onPostExecute(Result),运作于UI进程,能够对后台任务的結果作出解决,結果  
  90.         //便是doInBackground(Params…)的返回值。  
  91.         @Override       
  92.         protected void onPostExecute(Bitmap bitmap) {      
  93.             // 回到結果bitmap表明在ImageView控制            
  94.             imView.setImageBitmap(bitmap);        
  95.         }    
  96.     }  
  97.   
  98. }  

三、环境变量

  开启“AndroidManifest.xml”文档。

  随后键入下列编码:

[html] view plain copy

 
  1. <?xml version=“1.0” encoding=“utf-8”?>  
  2. <manifest xmlns:android=“http://schemas.android.com/apk/res/android”  
  3.     package=“com.genwoxue.networkphoto”  
  4.     android:versionCode=“1”  
  5.     android:versionName=“1.0” >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion=“10”  
  9.         android:targetSdkVersion=“14” />  
  10.   
  11.     <uses-permission android:name=“android.permission.INTERNET” />  
  12.       
  13.     <application  
  14.         android:allowBackup=“true”  
  15.         android:icon=“@drawable/ic_launcher”  
  16.         android:label=“@string/app_name”  
  17.         android:theme=“@style/AppTheme” >  
  18.         <activity  
  19.             android:name=“com.genwoxue.networkphoto.MainActivity”  
  20.             android:label=“@string/app_name” >  
  21.             <intent-filter>  
  22.                 <action android:name=“android.intent.action.MAIN” />  
  23.   
  24.                 <category android:name=“android.intent.category.LAUNCHER” />  
  25.             </intent-filter>  
  26.         </activity>  
  27.     </application>  
  28.   
  29. </manifest>  

 

留意:必须在AndroidManifest.xml文件中加上管理权限:

   <uses-permission android:name=”android.permission.INTERNET” />

 

    关键字:

天才代写-代写联系方式