1. 程式人生 > >Android開發之網路圖片檢視方法BitmapFactory.decodeStream()學習01

Android開發之網路圖片檢視方法BitmapFactory.decodeStream()學習01

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;

	}
結果截圖很簡單: