android 網絡_網絡圖片查看器,
xml

![]()
<?xml version="1.0"?>
-<LinearLayout tools:context=".MainActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<EditText android:id="@+id/et_url" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="http://www.baidu.com"/>
<Button android:id="@+id/bt_looksource" android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="查看圖片"/>
-<ScrollView android:layout_height="wrap_content" android:layout_width="wrap_content">
<ImageView android:id="@+id/img_pic" android:layout_height="match_parent" android:layout_width="match_parent"/>
</ScrollView>
</LinearLayout>
圖片查看控件
java

![]()
package com.itheima.sourcelook;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.itheima.piclook.R;
public class MainActivity extends Activity implements OnClickListener{
private EditText et_url;
private ImageView img_pic;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext =this;
et_url = (EditText) findViewById(R.id.et_url);
Button bt_looksource = (Button) findViewById(R.id.bt_looksource);
img_pic = (ImageView) findViewById(R.id.img_pic);
//二.設置點擊事件
bt_looksource.setOnClickListener(this);
System.out.println("oncreate方法線程:"+Thread.currentThread().getName());
}
//☆☆☆1.在主線程中創建一個Handler對象
private Handler handler = new Handler(){
//☆☆☆2.重寫handler的handlermessage方法,用來接收子線程中發來的消息
public void handleMessage(android.os.Message msg) {
//☆☆☆5.接收子線程發送的數據,處理數據。
Bitmap bitmap = (Bitmap) msg.obj;
//☆☆☆6.當前方法屬於主線程可以做UI的更新
//五.獲取服務器返回的內容,顯示到textview上
img_pic.setImageBitmap(bitmap);//設置ImageView的圖片內容
};
};
@Override
public void onClick(View v) {
try{
//三.oclick方法中獲取用戶輸入的url地址
final String url_str = et_url.getText().toString().trim();
if(TextUtils.isEmpty(url_str)){
Toast.makeText(mContext, "url不能為空", 0).show();
return ;
}
System.out.println("oclick方法線程:"+Thread.currentThread().getName());
//創建一個子線程做網絡請求
new Thread(new Runnable() {
@Override
public void run() {
try{
System.out.println("oclick方法runnable線程:"+Thread.currentThread().getName());
//四.請求url地址
//1.創建一個Url對象
URL url = new URL(url_str);
//2.獲取一個UrlConnection對象
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//3.為UrlConnection對象設置一些請求的參數,請求方式,連接的超時時間
connection.setRequestMethod("GET");//設置請求方式
connection.setConnectTimeout(1000*10);//設置超時時間
//4.在獲取url請求的數據前需要判斷響應碼,200 :成功,206:訪問部分數據成功 300:跳轉或重定向 400:錯誤 500:服務器異常
int code = connection.getResponseCode();
if(code == 200){
//5.獲取有效數據,並將獲取的流數據解析成String
InputStream inputStream = connection.getInputStream();
//將一個讀取流轉換成一個圖片 Drawable , Btimap:位圖 ?????
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//☆☆☆3.子線中創建一個Message對象,為了攜帶子線程中獲取的數據給主線程。
Message msg = Message.obtain();//獲取一個Message對象,內部實現是:如果之前的Message存在直接返回,不存在創建新的Message返回
msg.obj = bitmap;//將獲取的數據封裝到msg中。
//☆☆☆4.使用handler對象將message發送到主線程。
handler.sendMessage(msg);
}
}catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}catch (Exception e) {
e.printStackTrace();
}
}
}
MainActivity
字節流操作

![]()
package com.itheima.sourcelook;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamUtils {
public static String streamToString(InputStream in){
String result ="";
try{
//創建一個字節數組寫入流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length = 0;
while ( (length = in.read(buffer)) !=-1) {
out.write(buffer, 0, length);
out.flush();
}
result = out.toString();//將字節流轉換成string
out.close();
}catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
StreamUtils
老師筆記
04 網絡圖片查看器
adb shell+ input text 內容;可以通過將內容輸入到手機上的輸入框。
將一個讀取流轉換成bitmap對象:
BitmapFactory:可以將文件,讀取流,字節數組轉換成一個Bitmap對象。
Bitmap bitmap = BitmapFactory.decodeStream(InputStream in);
imageView.setImageBitmap(bitmap);//設置圖片內容