從網路中獲取載入一個圖片
阿新 • • 發佈:2019-01-27
import java.io.BufferedInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; public class ImageActivity extends Activity { private ImageView Iv; private Button btn; //定義thread以及返回的id private final int SUCCESS=0; private final int FAILED=1; //網路獲取圖片的地址 private final String url="http://d.3987.com/htfss_140227/004.jpg"; //網路獲取圖片的bitmap物件 private Bitmap bit=null; //定義handler物件 private Handler handler=new Handler(){ //實現當handler接收到message資訊的回撥函式 public void handleMessage(Message msg){ super.handleMessage(msg); switch (msg.what) { case SUCCESS: Toast.makeText(ImageActivity.this, "圖片載入成功", Toast.LENGTH_SHORT).show(); Iv.setImageBitmap(bit); break; case FAILED: Toast.makeText(ImageActivity.this, "圖片載入失敗", Toast.LENGTH_SHORT).show(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_image); Iv=(ImageView) findViewById(R.id.Iv); btn=(Button) findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { setImage(); } }); } public void setImage(){ //判斷網路是否暢通 if(isOpenNetwork()){ new Thread(){ public void run() { super.run(); //請求網路圖片 try { bit=getRemoteImage(new URL(url)); } catch (MalformedURLException e) { e.printStackTrace(); } //根據載入的網路圖片,返回不同的message物件 if(bit !=null){ Message msg=new Message(); msg.what=SUCCESS; //給handler傳送message資訊物件 handler.sendMessage(msg); }else{ Message msg=new Message(); msg.what=FAILED; handler.sendMessage(msg); } }; }.start(); } } //根據傳入的url物件,請求網路圖片 public Bitmap getRemoteImage(final URL aURL){ //建立連結 try { final URLConnection conn=aURL.openConnection(); conn.connect(); //從url連結讀取圖片流 final BufferedInputStream bis=new BufferedInputStream(conn.getInputStream()); //從圖片流中得到圖片 final Bitmap bm=BitmapFactory.decodeStream(bis); //關閉圖片流 bis.close(); return bm; } catch (IOException e) { Log.d("DEBUGTAG", "Oh noooz an error..."); } return null; } //判斷網路狀態是否正常 private boolean isOpenNetwork(){ //得到系統的網路連結服務 ConnectivityManager connManager=(ConnectivityManager) getSystemService( Context.CONNECTIVITY_SERVICE); //判斷網路是否可以連結 if(connManager.getActiveNetworkInfo() !=null){ return connManager.getActiveNetworkInfo().isAvailable(); } return false; } }