关于http网络请求Imageloder图片SharedPreferences封装Banner无限轮播
2017-08-24 09:44
351 查看
关于网络请求,这一方面也是经常用,可是对于初学者就很头疼,所以我就把我封装的几个Util类给奉献出来吧
首先是HttpURLConnection:
这个是我有关于网络请求的一个类,可能有帮助,大家多多指点
首先是HttpURLConnection:
public class HttpUtils { //get请求获取网络数据 public static String getData(String utl) { try { URL url = new URL(utl); System.out.println("iiiii"+utl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(1024 * 8); connection.setReadTimeout(1024 * 8); connection.setRequestMethod("GET"); int responseCode = connection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = connection.getInputStream(); int len = 0; byte[] buf = new byte[1024 * 8]; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((len = inputStream.read(buf)) != -1) { baos.write(buf, 0, len); } baos.close(); System.out.println("iiiiiiiiiii"+baos.toString()); return baos.toString(); } else { Log.e(TAG, "onCreate: Error" + responseCode); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }
然后是Imageloder:
public class ImageloderUtils { public static void setImageView(String url, Context context, ImageView imageView) { //初始化 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).build(); //创建Imageloader 对象 ImageLoader imageLoader = ImageLoader.getInstance(); //设置初始化 imageLoader.init(config); DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) //设置图片在下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) //设置图片加载/解码过程中错误时候显示的图片 .cacheInMemory(true)//设置下载的图片是否缓存在内存中 .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型 .build();//构建完成 imageLoader.displayImage(url, imageView, options); } }如果需要用到无限轮播那就要用到一个bean类:还有一个依赖:
compile 'com.github.bumptech.glide:glide:3.7.0'
public class ImageLoaderBanner extends ImageLoader{ @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } }
再就是SharedPreferences我也封装了一下:
public class SharedPreferrenceHelper { private static final String THEME = "theme"; public static void settheme(Context context, String theme){ SharedPreferences sp = context.getSharedPreferences("demo",Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString(THEME,theme); editor.apply(); } public static String gettheme(Context context){ SharedPreferences sp = context.getSharedPreferences("demo",Context.MODE_PRIVATE); return sp.getString(THEME,"1"); } }
再然后我就用上面的东西做一个无限轮播:
private void getBanner(){ View view = View.inflate(getContext(),R.layout.header,null); SharedPreferences prefs = getActivity().getSharedPreferences("user", Context.MODE_PRIVATE); Banner banner = (Banner) view.findViewById(R.id.ban); banner.setImageLoader(new ImageLoaderBanner()); final List<String> img=new ArrayList<>(); final DataBase.ResultBean.DataBean imgs = datas.get(0); img.add(imgs.getThumbnail_pic_s03()); img.add(imgs.getThumbnail_pic_s02()); img.add(imgs.getThumbnail_pic_s()); banner.setImages(img); banner.start(); xListView.addHeaderView(view); }我这里是把Banner直接添加到XListView头部,布局我就不再多写,大家想必都懂这些都是小崔做项目时封装的一些util还望大家多多点评
public class BlankFragment0 extends Fragment implements XListView.IXListViewListener{
private String utl = "http://v.juhe.cn/toutiao/index?type=toutiao&key=d4c18a18c3391f90dc971633f6e6f445";
private XListView xListView;
private List<DataBase.ResultBean.DataBean> datas;
private MyAdapter myAdapter;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
//刷新listView
myAdapter.notifyDataSetChanged();
//隐藏头和尾
closeXlistView();
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
datas = new ArrayList<DataBase.ResultBean.DataBean>();
View view = inflater.inflate(R.layout.fragment_blank_fragment0, container, false);
initView(view);
* new MyAsyncTask().execute(utl);
//设置XlistView的上拉加载,下拉刷新的接口
xListView.setXListViewListener(this);
xListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
new AlertDialog.Builder(getContext())
.setTitle("删除")
.setMessage("确定要删除我吗?")
.setPositiveButton("是", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
datas.remove(position-2);
myAdapter.notifyDataSetChanged();
dialog.dismiss();
}
})
.setNegativeButton("否", null)
.show();
return true;
}
});
return view;
}
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
datas.add(0,datas.get(5));
handler.sendEmptyMessage(0);
}
},2000);
}
@Override
public void onLoadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
for(int x=0; x<5; x++){
datas.add(datas.get(x+5));
}
handler.sendEmptyMessage(0);
}
},2000);
}
private void closeXlistView() {
//停止加载更多
xListView.stopLoadMore();
//停止刷新
xListView.stopRefresh();
//更新时间
xListView.setRefreshTime(dateFormat());
}
//自定义的AsyncTask重点地方
private class MyAsyncTask extends AsyncTask<String, Integer, String> {
//这个方法运行在主线程,在doInBackground之前运行,我们一般做初始化
@Override
protected void onPreExecute() {
super.onPreExecute();
}
//这个方法运行在子线程,我们可以做一个耗时操作
@Override
protected String doInBackground(String... strings) {
////////////////////////////////网络请求的操作,注意用return返回获取到的字符串,加网络权限////////////////////////////
String data = HttpUtils.getData(strings[0]);
Gson gson = new Gson();
DataBase dataBase = gson.fromJson(data, DataBase.class);
datas.addAll(dataBase.getResult().getData());
return null;
}
//运行在主线程,这个方法在doInBackground执行之后执行.我们一般做从网络拿到数据,使用的数据的操作
@Override
protected void onPostExecute(String s) {
////////////////////拿到处理后的数据,更新UI///////////////////////////////
myAdapter = new MyAdapter(getContext(), datas);
getBanner();
//开启下拉刷新
xListView.setPullRefreshEnable(true);
//开启加载更多可用
xListView.setPullLoadEnable(true);
xListView.setAdapter(myAdapter);
xListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// Toast.makeText(getContext(), datas.get(i).getUrl(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getActivity(), WebActivity.class);
intent.putExtra("url", datas.get(i-2).getUrl());
startActivity(intent);
}
});
super.onPostExecute(s);
}
}
private void initView(View view) {
xListView = (XListView) view.findViewById(R.id.xListView);
}
private void getBanner(){ View view = View.inflate(getContext(),R.layout.header,null); SharedPreferences prefs = getActivity().getSharedPreferences("user", Context.MODE_PRIVATE); Banner banner = (Banner) view.findViewById(R.id.ban); banner.setImageLoader(new ImageLoaderBanner()); final List<String> img=new ArrayList<>(); final DataBase.ResultBean.DataBean imgs = datas.get(0); img.add(imgs.getThumbnail_pic_s03()); img.add(imgs.getThumbnail_pic_s02()); img.add(imgs.getThumbnail_pic_s()); banner.setImages(img); banner.start(); xListView.addHeaderView(view); }
/**
* 格式化毫秒值
*
* @return
*/
private String dateFormat() {
long currentTimeMillis = System.currentTimeMillis();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format = dateFormat.format(currentTimeMillis);
return format;
}
}
这个是我有关于网络请求的一个类,可能有帮助,大家多多指点
相关文章推荐
- xml解析,httputils网络请求,imageloder图片加载
- 关于 Xcode7网络请求的Http 协议改为 Https 协议的程序修改
- 关于Http网络请求一直出错的问题
- 【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目
- cocos2dx 3.x lua http请求网络图片,自己封装的,很好用,需要的可以看看
- 关于HttpUrlConnection加载和下载网络图片的学习
- Android HttpURLConnection获取网络下载图片POST请求方式
- 关于HttpModule中像图片,*.css,*.js等资源文件也被请求问题的解决
- 关于网络请求中无法访问HttpRequestBase
- 关于HTTP 协议的特点,以及网络请求GET 和 POST 的区别?
- 关于HttpUrlConnection网络请求之返回结果的中文乱码原因的探索
- 关于listview中图片切圆,网络请求数据,并Gson解析后得到list
- 关于某些网站的图片盗链功能,相关http 请求的解决方法
- 关于HttpUrlConnection请求网络加载证书与不加载证书的区别
- 关于手机在wap网络下的 HTTP 请求方式
- 关于Android网络访问请求的一些总结 包括HttpClient HttpUrlConnection Volley
- 关于HttpModule中像图片,*.css,*.js等资源文件也被请求问题的解决
- HttpImage(网络请求图片)
- 关于HttpUrlConnection网络请求之返回结果的中文乱码原因的探索
- 关于某些网站的图片盗链功能,相关http 请求的解决方法