源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android 网络图片查看显示的实现方法

  • 时间:2020-12-05 05:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android 网络图片查看显示的实现方法
我们的应用或多或少都会从网络获取图片数据然后进行显示,下面就将实现一个这样的例子,获取网络中的图片! [b]首先:我们来看一下效果图[/b] [img]http://files.jb51.net/file_images/article/201304/2013041817110569.jpg[/img] 界面中有三个控件,一个EditText,一个Button,一个ImageView [b]1、下面是具体布局文件[/b] <EditText   android:id="@+id/picturepagh"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:text="@string/hello_world" /> <Button   android:id="@+id/btn"   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:text="查看" /> <ImageButton   android:id="@+id/imageView"   android:layout_width="fill_parent"   android:layout_height="200px" /> [b]2、在MainActivity中进行图片图示代码编写[/b] 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);  } }  [b]3、添加一个ImageService图片服务类,里面包含一个获取网络数据的方法;[/b] 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;  } }  [b]4、添加一个流处理工作类StreamTool[/b] 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();  } }  [b]5、大功告成?NO,还要添加网络访问权限: <uses-permission android:name="android.permission.INTERNET" />[/b]  OK,运行程序!  
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部