Android開發之網路圖片檢視方法BitmapFactory.decodeStream()學習01
阿新 • • 發佈:2019-01-25
Android實現網路圖片的檢視有好幾種方法,但這本身是一種很耗時的操作,可以通過直接獲取和操作執行緒的方法,自己學習使用了BitmapFactory.decodeStream()在程式碼中自己寫了註釋,大致分為以下幾步:
①設定URL物件和連線
②設定一下在連線和讀取過程中的超時時間防止長時間無響應的等待
③連線成功後根據資料流建立一個Bitmap的點陣圖物件,最後返回Bitmap型別
④通過ImageView顯示圖片即可
結果截圖很簡單:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); icon = (ImageView) findViewById(R.id.iv_ivicon); address = (EditText) findViewById(R.id.et_address); Button submit = (Button) findViewById(R.id.btn_submit); submit.setOnClickListener(this); } @Override public void onClick(View v) { String uri = address.getText().toString(); Bitmap bitmap = getImageFromNet(uri); icon.setImageBitmap(bitmap);// } private Bitmap getImageFromNet(String btp) { HttpURLConnection conn = null; try { URL myUri = new URL(btp); // 建立URL物件 // 建立連結 conn = (HttpURLConnection) myUri.openConnection(); conn.setConnectTimeout(10000);// 設定連結超時 conn.setReadTimeout(5000); conn.setRequestMethod("GET");// 設定請求方法為get conn.connect();// 開始連線 int responseCode = conn.getResponseCode(); if (responseCode == 200) { InputStream is = conn.getInputStream(); // 根據流資料建立 一個Bitmap點陣圖物件 Bitmap bitmap = BitmapFactory.decodeStream(is); return bitmap; // 訪問成功 } else { Log.i(TAG, "訪問失敗:responseCode=" + responseCode); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (conn != null) { conn.disconnect(); } } return null; }