关于http网络请求Imageloder图片SharedPreferences封装Banner无限轮播
来源:互联网 发布:pta编程答案 编辑:程序博客网 时间:2024/06/04 19:23
关于网络请求,这一方面也是经常用,可是对于初学者就很头疼,所以我就把我封装的几个Util类给奉献出来吧
首先是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"); }}再然后我就用上面的东西做一个无限轮播:这些都是小崔做项目时封装的一些util还望大家多多点评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头部,布局我就不再多写,大家想必都懂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; }}
阅读全文
0 0
- 关于http网络请求Imageloder图片SharedPreferences封装Banner无限轮播
- Banner 网络图片无限轮播 ImageLoader
- Banner 图片无限轮播
- Banner无限图片轮播
- Glide+Banner网络请求加载图片实现无限自动轮播+小圆点
- 利用banner实现图片无限轮播,
- Banner无限轮播
- Banner无限轮播
- banner无限轮播
- banner无限轮播
- Banner无限轮播
- Banner无限轮播
- banner无限轮播
- Banner无限轮播
- Banner无限轮播
- banner 无限轮播
- Banner无限轮播
- Banner无限轮播
- drawable中的轮播的小圆点制作
- 《锋利的jQuery》一、认识jQuery
- 面向对象二、函数
- Android之EditText禁止输入空格和回车符
- 面向对象三、作用域
- 关于http网络请求Imageloder图片SharedPreferences封装Banner无限轮播
- 面向对象一、原型
- javascript(正则表达式)
- IScroll-5的文档
- 《锋利的jQuery》四、jQuery的事件
- flexbox 布局
- 《锋利的jQuery》五、jQuery的动画
- 在一张表中过滤出同一张卡号对应多个户名数据
- 《锋利的jQuery》六、jQuery的表单与表格