一、xml布局,定义一个按钮(点击获取)和一个ImageView用来装图片
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pic"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/get_url"
android:text="get_url"
/>
</LinearLayout>
二、activity代码
public class MainActivity extends Activity {
ImageView PIC;
Button BTN_GET;
Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
find_id();
key_things();
}
private void key_things() {//这里主要是创建一个线程来去请求URL
// TODO Auto-generated method stub
BTN_GET.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Thread_geturl thread_geturl = new Thread_geturl();
thread_geturl.start();//启动线程
}
});
}
public class Thread_geturl extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
String S_url = "http://image.biaobaiju.com/uploads/20180918/15/1537256494-ZnSKMzEoBI.jpeg"; //这是你要获取的网络图片
try {
URL myUrl = new URL(S_url);//实例化你要请求的URL
URLConnection url_conn = myUrl.openConnection();//url建立连接
InputStream in = url_conn.getInputStream();//
BitmapFactory.Options option = new BitmapFactory.Options();
option.inSampleSize = 1;//这里的意思是图片的宽和高是原来的1/1,也就是说这里的数字是分母,
bmp = BitmapFactory.decodeStream(in,null, option);
//解释一下decodeStream(解码流)的三个参数
//第一个参数是将原始数据转化为位图的输入流
//第二个参数不是很了解
//第三个意思是图像是否应该被完全解码,或者只返回大小
Message msg = new Message();
msg.what = 0;//可以理解为表示码或者是身份
handler.sendMessage(msg);//用handler发送结果到UI线程
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Handler handler = new Handler(){//这里是接受消息,从其他线程传过来的消息
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.what) {
case 0:
PIC.setImageBitmap(bmp);
break;
default:
break;
}
}
};
private void find_id() {
// TODO Auto-generated method stub
PIC = (ImageView) findViewById(R.id.pic);
BTN_GET = (Button) findViewById(R.id.get_url);
}
}
结果: