Android 怎么查看网络图片的方法
操作方法
- 01
随着智能手机的普及,尤其是基于安卓系统的广泛使用,使android开发具有很好的前景.下面分享一个Android 怎么查看网络图片的方法. 第一步:下面是具体布局文件 android:id="@+id/picturepagh" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello_world" /> android:id="@+id/btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="查看" /> android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="200px" /> 第二步:在MainActivity中进行图片图示代码编写 public class MainActivity extends Activity { private Button btn; private EditText path; private ImageView imgview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); path = (EditText) findViewById(R.id.picturepagh); imgview = (ImageView) findViewById(R.id.imageView); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.i("CLICK", ((Button) v).getText().toString()); new Thread(runa).start(); } }); } public void setView() { String picturepath = path.getText().toString(); byte[] data = null; try { data = ImageService.getImage(picturepath); Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);// BitmapFactory:图片工厂! Looper.prepare();// 必须调用此方法,要不然会报错 Message msg = new Message(); msg.what = 0; msg.obj = bitmap; handler.sendMessage(msg); } catch (Exception e) { Toast.makeText(getApplicationContext(), "获取图片错误", 1).show(); } } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0) { updateImageView((Bitmap) msg.obj); } } }; private Runnable runa = new Runnable() { @Override public void run() { setView(); } }; private void updateImageView(Bitmap bm) { imgview.setImageBitmap(bm); } } 第三步,添加一个流处理工作类StreamTool public class StreamTool { public static byte[] read(InputStream ins) throws Exception { ByteArrayOutputStream outstream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length = 0; while ((length = ins.read(buffer)) > -1) { outstream.write(buffer, 0, length); } outstream.close(); return outstream.toByteArray(); } } 第四步、添加一个ImageService图片服务类,里面包含一个获取网络数据的方法; public class ImageService { // 获取网络图片的数据 public static byte[] getImage(String picturepath) throws Exception { URL url = new URL(picturepath); HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 基于http协议的连接对象 conn.setConnectTimeout(10);// 10秒; conn.setRequestMethod("GET");// 大写 if (conn.getResponseCode() == 200) { InputStream ins = conn.getInputStream(); return StreamTool.read(ins); } return null; } }