PullToRefreshScrollView的使用 +Banner
来源:互联网 发布:使命召唤ol优化差 编辑:程序博客网 时间:2024/06/04 17:43
package com.example.a08yuekao.fragment;import android.graphics.Bitmap;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.ScrollView;import android.widget.TextView;import com.example.a08yuekao.MyImageLoader;import com.example.a08yuekao.R;import com.example.a08yuekao.Result;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshScrollView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.youth.banner.Banner;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/10/23. */public class SyFragment extends Fragment { //private PullToRefreshListView pull_lv; private Handler handler = new Handler(); private String str = ""; private List<Result.DataBean.ComicsBean> newslist; private MyAdapter myAdapter; private int pageIndex = 1; private List<String> data = new ArrayList<>(); private Banner bann; private PullToRefreshScrollView rsv; private DisplayImageOptions options; private ListView lv; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.sy, null); bann = (Banner) view.findViewById(R.id.bann); lv = (ListView) view.findViewById(R.id.lv); rsv = (PullToRefreshScrollView) view.findViewById(R.id.refresh_scroll_view); new MyAsync().execute("http://api.kkmh.com/v1/daily/comic_lists/0?since=" + pageIndex + "&gender=" + pageIndex + "&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9"); options = new DisplayImageOptions.Builder() .cacheInMemory(true)//进行内存缓存 .cacheOnDisk(true)//进行sd卡缓存 /*.showImageOnLoading(R.drawable.ic_stub) // 设置正在下载中的图片 .showImageForEmptyUri(R.drawable.ic_empty) //没有请求地址时 .showImageOnFail(R.drawable.ic_error)//下载错误时*/ .bitmapConfig(Bitmap.Config.RGB_565)//设置图片质量 .build(); initLV(); return view; } private void initLV() { //1.设置模式 rsv.setMode(PullToRefreshBase.Mode.BOTH); //2.通过调用getLoadingLayoutProxy方法,设置下拉刷新状况布局中显示的文字 ,第一个参数为true,代表下拉刷新 ILoadingLayout headLables = rsv.getLoadingLayoutProxy(true, false); headLables.setPullLabel("下拉刷新"); headLables.setRefreshingLabel("正在刷新"); headLables.setReleaseLabel("松开刷新"); //2.设置上拉加载底部视图中显示的文字,第一个参数为false,代表上拉加载更多 ILoadingLayout footerLables = rsv.getLoadingLayoutProxy(false, true); footerLables.setPullLabel("上拉加载"); footerLables.setRefreshingLabel("正在载入..."); footerLables.setReleaseLabel("松开加载更多"); //3.设置监听事件 rsv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) { addToTop();//请求网络数据,并更新listview组件 refreshComplete();//数据加载完成后,关闭header,footer } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) { addToBottom();//请求网络数据,并更新listview组件 refreshComplete();//数据加载完成后,关闭header,footer } }); } /** * 刷新完成时关闭 */ private void addToBottom() { pageIndex++; new MyAsync().execute("http://api.kkmh.com/v1/daily/comic_lists/0?since="+pageIndex+"&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9"); } public void refreshComplete() { new Handler().postDelayed(new Runnable() { @Override public void run() { rsv.onRefreshComplete(); } }, 1000); } private void addToTop() { pageIndex--; new MyAsync().execute("http://api.kkmh.com/v1/daily/comic_lists/0?since="+pageIndex+"&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9"); } class MyAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { //创建Url对象 try { URL url = new URL(params[0]); //打开连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(3000); connection.setConnectTimeout(3000); int code = connection.getResponseCode(); if (code == 200) { InputStream inputStream = connection.getInputStream(); str = streamToString(inputStream); } } catch (Exception e) { e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.e("ZZZ", s + "11111111111111111"); //解析数据 Gson gson = new Gson(); Result result = gson.fromJson(str, Result.class); newslist = result.getData().getComics(); for (int i=0;i<newslist.size();i++){ data.add(newslist.get(i).getCover_image_url()); } //设置banner样式 // banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE); //设置图片加载器 bann.setImageLoader(new MyImageLoader()); //设置图片集合 bann.setImages(data); //设置banner动画效果 //banner.setBannerAnimation(Transformer.RotateDown); //设置标题集合(当banner样式有显示title时) //banner.setBannerTitles(imageTitle); //设置轮播时间 bann.setDelayTime(1500); //设置指示器位置(当banner模式中有指示器时) //banner.setIndicatorGravity(BannerConfig.CENTER); //banner设置方法全部调用完毕时最后调用 bann.start(); setAdapter(); } } private void setAdapter() { if (myAdapter == null) { myAdapter = new MyAdapter(); lv.setAdapter(myAdapter); } else { myAdapter.notifyDataSetChanged(); } } public String streamToString(InputStream is) { StringBuilder sb = new StringBuilder(); String con; BufferedReader br = new BufferedReader(new InputStreamReader(is)); try { while ((con = br.readLine()) != null) { sb.append(con); } } catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace(); } return sb.toString(); } class MyAdapter extends BaseAdapter { @Override public int getCount() { return newslist.size(); } @Override public Object getItem(int position) { return newslist.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = View.inflate(getActivity(), R.layout.item, null); ImageView img = (ImageView) view.findViewById(R.id.img); TextView tv = (TextView) view.findViewById(R.id.tv); ImageLoader.getInstance().displayImage(newslist.get(position).getCover_image_url(), img, options); tv.setText(newslist.get(position).getTitle()); return view; } }}
//自定义View继承ListView 解决与Banner的冲突问题
package com.example.a08yuekao;import android.content.Context;import android.util.AttributeSet;import android.widget.ListView;/** * Created by Administrator on 2017/10/24. */public class Zdy extends ListView { public Zdy(Context context) { super(context); } public Zdy(Context context, AttributeSet attrs) { super(context, attrs); } public Zdy(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }}布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ptr="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.handmark.pulltorefresh.library.PullToRefreshScrollView android:id="@+id/refresh_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrAnimationStyle="flip" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF"> <!--在scrollView中添加组件 viewPager和ListView 注意:在scrollView中只能有一个子孩子--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/bann" ></com.youth.banner.Banner> <com.example.a08yuekao.Zdy android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" ></com.example.a08yuekao.Zdy> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView></LinearLayout>
阅读全文
0 0
- PullToRefreshScrollView的使用 +Banner
- PullToRefreshScrollView+Banner+banner.Listview
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshscrollview的具体使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- Banner+1PullToRefreshScrollView
- PullToRefreshScrollView和Banner
- PullToRefreshScrollView 整体刷新的使用
- 使用PullToRefreshScrollView
- PullToRefreshScrollView的scrollTo方法的使用
- 【sdk驱动开发4】ps侧dma使用
- 安装Eclipse出现“The Eclipse executable launcher was unable to locate its companion shared library”错误
- 鼠标经过特效
- 结构体:struct 和 typedef struct应该以及结构体的构造函数 区别
- C/C++从文本文件读取数据
- PullToRefreshScrollView的使用 +Banner
- MONGODB学习之一
- SpringBoot非官方教程 | 终章:文章汇总
- jmeter 元件的作用域与执行顺序
- 闭包作用域问题
- MindManager 2018新视图洋葱图介绍
- R12 FA中“摊销“(Amortize Adjustment)的实际应用
- Hadoop学习笔记1
- AGC010