Android网络之加载网络中图片
来源:互联网 发布:淘宝客和直通车的区别 编辑:程序博客网 时间:2024/06/02 07:31
Android网络之加载网络中图片
前几篇我们已经介绍了网络中数据传输的形式,同时也介绍了网络请求协议,下载我们写一个demo演示下。
我们的原型图:
(1)、我们建立一个名为networkdemo的工程。新建一个NetWorkUtils类用于处理我们的网络请求。
/** * Created by dsw on 2015/10/30. */ public class NetWorkUtils { public static Bitmap downLoadImageFromNet(String urlString){ Bitmap bitmap = null; InputStream inputStream; try { //建立一个URL对象 URL url = new URL(urlString); //获取HttpURLConnection对象 HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setConnectTimeout(2000); //设置请求方式 httpURLConnection.setRequestMethod("GET"); //设置读取数据的事件 httpURLConnection.setReadTimeout(2000); //设置是否使用缓存 httpURLConnection.setUseCaches(false); //设置可以从服务器读取数据,默认为true httpURLConnection.setDoInput(true); //获取链接url获取的返回码 int requestCode = httpURLConnection.getResponseCode(); if(requestCode == 200){//表示我们请求成功 inputStream = httpURLConnection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return bitmap; } }
这里就是我们上篇将的基本内容。通过httpURLConnection.getInputStream();获取流,然后将流形成一个bitmap对象即可。
(2)、布局文件:
<?xml version="1.0" encoding="utf-8"?> <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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_find" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="17sp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:text="查询"/> <EditText android:id="@+id/et_url" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toLeftOf="@id/btn_find"/> </RelativeLayout> <ImageView android:id="@+id/iv_imageView" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY"/> </LinearLayout>
(3)、MainActivity中的处理,我们要记住,请求网络不能再主线程中进行,所以我们需要开启一个子线程进行网络的访问。
public class MainActivity extends AppCompatActivity { private Button btn_find; private EditText et_url; private ImageView iv_imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_find = (Button) findViewById(R.id.btn_find); et_url = (EditText) findViewById(R.id.et_url); iv_imageView = (ImageView) findViewById(R.id.iv_imageView); btn_find.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { Message msg = mHandler.obtainMessage(); msg.obj = NetWorkUtils.downLoadImageFromNet(et_url.getText().toString().trim()); msg.what =0; mHandler.sendMessage(msg); } }).start(); } }); } private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { Bitmap bitmap = (Bitmap) msg.obj; if(bitmap == null){ iv_imageView.setBackgroundResource(R.mipmap.ic_launcher); }else{ iv_imageView.setImageBitmap(bitmap); } } }; }
至此,基本的就完成了。看下效果图:
是不是很简单,请求其它数据都是一个道理,读取流中的字节,转换成对象即可。
源码下载
作者:mr_dsw 欢迎转载,与人分享是进步的源泉!
转载请保留地址:http://blog.csdn.net/mr_dsw
0 0
- Android网络之加载网络中图片
- android加载网络图片
- Android加载网络图片
- android加载网络图片
- android 网络加载图片
- android加载网络图片
- Android加载网络图片
- Android加载网络图片
- Android加载网络图片
- android加载网络图片
- Android网络加载图片
- Android 网络图片加载之cude 框架
- Android学习笔记之网络图片加载
- Android之异步加载网络图片
- Android之加载网络图片—ImageLoader
- Android之AsyncTask网络加载图片
- Android Volley之加载网络图片
- Android中网络图片的异步加载
- linux DTS 分析
- 一个数如果恰好等于它的因子之和,这个数就称为完整数
- JavaScript选项卡
- java中 占位符模糊查询
- Could not find conduit initiator for address
- Android网络之加载网络中图片
- 删除Android工程中冗余资源
- ubuntu中通过crontab执行python任务
- 解决mvn archetype:generate 速度缓慢问题
- mysql主从复制、读写分离到数据库水平拆分及库表散列
- 浅析Javascript原型继承
- Linux下mysql的root密码忘记解决方法
- 事务处理必须重新运行问题---运维日志2
- Oracle疑问贴