Android通过http协议获得图片
Android通过http协议获得图片
Android通过图片网址获得图片并显示在imageView中。
下面就简单的来说明操作过程:
首先必须在布局文件中声明imageView控件:
- <ImageView
- android:id="@+id/image"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
还必须在清单文件中加入访问网络的权限:
<uses-permission android:name="android.permission.INTERNET" />
其次:用一个service类来实现访问http协议,并且获得链接的返回值这个过程:htmlPath是图片的网络地址
- public class PageService {
- /**@description:获取图片的数据
- * @author:Administrator
- * @return:byte[]
- * @param htmlpath
- * @return
- * @throws Exception
- */
- public static byte[] getImage(String htmlpath) throws Exception {
- byte[] imagearray = null;
- URL url = new URL(htmlpath);
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- conn.setConnectTimeout(5000);
- // conn.setRequestMethod("GET");
- conn.connect();
- if (conn.getResponseCode() == 200) {
- byte[] buffer = new byte[1024];
- ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
- int len = 0;
- InputStream inputStream = conn.getInputStream();
- while ((len = inputStream.read(buffer)) != -1) {
- arrayOutputStream.write(buffer, 0, buffer.length);
- }
- imagearray = arrayOutputStream.toByteArray();
- }
- return imagearray;
- }
- }
最后在activity中启用一个线程来调用这个业务方法,并在handler中对UI进行更新:(必须实现线程否则会出错,这是和3.0版本之前不同的地方)
- public class MainActivity extends Activity {
- private EditText strpath;
- private TextView htmlcontent;
- private ImageView imageview;
- Handler handler=new Handler(){
- @Override
- public void handleMessage(Message msg) {
- byte[] data=(byte[])msg.obj;
- Bitmap image=BitmapFactory.decodeByteArray(data, 0, data.length);
- imageview.setImageBitmap(image);}
|
评论暂时关闭