Banner加refershscrollview

来源:互联网 发布:彩虹域名授权管理系统 编辑:程序博客网 时间:2024/06/03 18:50

要在build.gradle里面添加这句话
compile ‘com.youth.banner:banner:1.4.9’
主方法
package com.example.refershscrollview;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.TextView;

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.ImageLoader;
import com.youth.banner.Banner;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

private PullToRefreshScrollView pull_rs;private Banner banner;private Listview lv;private StringBuilder builder;int index=1;int type=1;List<Bean.DataBean> list=new ArrayList<>();private MyAdapter adapter;private List<String> list2;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    pull_rs = (PullToRefreshScrollView) findViewById(R.id.pull_rs);    banner = (Banner) findViewById(R.id.banner);    lv = (Listview) findViewById(R.id.lv);    intRefreshScrollView();    init();}public void init() {    Mytask mytask = new Mytask();    mytask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");}private void addToTop() {    type = 1;    Mytask mytask = new Mytask();    mytask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1" );}private void addToBottom() {    type = 2;    index++;    Mytask mytask = new Mytask();    mytask.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/" + index);}public void setAdapter() {    if (adapter == null) {        adapter = new MyAdapter();        lv.setAdapter(adapter);    } else {        adapter.notifyDataSetChanged();    }}private void intRefreshScrollView() {    //1.设置模式    pull_rs.setMode(PullToRefreshBase.Mode.BOTH);    //2.通过调用getLoadingLayoutProxy方法,设置下拉刷新状况布局中显示的文字 ,第一个参数为true,代表下拉刷新    ILoadingLayout headLables = pull_rs.getLoadingLayoutProxy(true, false);    headLables.setPullLabel("下拉刷新");    headLables.setRefreshingLabel("正在刷新");    headLables.setReleaseLabel("松开刷新");    //2.设置上拉加载底部视图中显示的文字,第一个参数为false,代表上拉加载更多    ILoadingLayout footerLables = pull_rs.getLoadingLayoutProxy(false, true);    footerLables.setPullLabel("上拉加载");    footerLables.setRefreshingLabel("正在载入...");    footerLables.setReleaseLabel("松开加载更多");    //3.设置监听事件    pull_rs.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        }    });}/** * 刷新完成时关闭 */public void refreshComplete(){    new Handler().postDelayed(new Runnable() {        @Override        public void run() {            pull_rs.onRefreshComplete();        }    },1000);}class Mytask extends AsyncTask<String, Void, String> {    @Override    protected String doInBackground(String... strings) {        try {            //获取url            URL url = new URL(strings[0]);            //请求网络            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();            int code = urlConnection.getResponseCode();            //判断是否返回成功            if (code == 200) {                //获取网络信息                InputStream inputStream = urlConnection.getInputStream();                BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream));                builder = new StringBuilder();                String s = "";                //拼接                while ((s = bf.readLine()) != null) {                    builder.append(s);                }            }        } catch (Exception e) {            e.printStackTrace();        }        return builder.toString();    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        Gson gson = new Gson();        Bean json = gson.fromJson(s, Bean.class);        if (type == 1) {            list.clear();            list.addAll(json.getData());        } else {            list.addAll(json.getData());        }       Log.d("zzz", list.toString());        //设置banner样式        // banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);        //设置图片加载器        list2 = new ArrayList<>();        for (int i=0;i<list.size();i++){            list2.add(list.get(i).getPic_url());        }        banner.setImageLoader(new MyImagloder());        //设置图片集合        banner.setImages(list2);        //设置banner动画效果        //banner.setBannerAnimation(Transformer.RotateDown);        //设置标题集合(当banner样式有显示title时)        //banner.setBannerTitles(imageTitle);        //设置轮播时间        banner.setDelayTime(1500);        //设置指示器位置(当banner模式中有指示器时)        //banner.setIndicatorGravity(BannerConfig.CENTER);        //banner设置方法全部调用完毕时最后调用        banner.start();        setAdapter();    }}class MyAdapter extends BaseAdapter {    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Viewholder vh;        if (convertView == null) {            vh = new Viewholder();            convertView = View.inflate(MainActivity.this, R.layout.item, null);            vh.img = (ImageView) convertView.findViewById(R.id.imageView);            vh.tv = (TextView) convertView.findViewById(R.id.textView);            convertView.setTag(vh);        } else {            vh = (Viewholder) convertView.getTag();        }        vh.tv.setText(list.get(position).getNews_title());        ImageLoader.getInstance().displayImage(list.get(position).getPic_url(), vh.img);        return convertView;    }}public static class Viewholder {    ImageView img;    TextView tv;}

}
自定义listview
package com.example.refershscrollview;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

/**
* author:Created by MingShao on 2017/10/24.
*/

public class Listview extends ListView {
public Listview(Context context) {
super(context);
}

public Listview(Context context, AttributeSet attrs) {    super(context, attrs);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,            MeasureSpec.AT_MOST);    super.onMeasure(widthMeasureSpec, expandSpec);}

}
Bannner所用类
package com.example.refershscrollview;

import android.content.Context;
import android.widget.ImageView;

import com.youth.banner.loader.ImageLoader;

/**
* author:Created by MingShao on 2017/10/24.
*/

public class MyImagloder extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//得到ImageLoader的实例
com.nostra13.universalimageloader.core.ImageLoader instance = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
//通过ImageLoader设置图片
instance.displayImage((String) path, imageView);
}
}
imageloder类
package com.example.refershscrollview;

import android.app.Application;
import android.graphics.Bitmap;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import java.io.File;

/**
* author:Created by MingShao on 2017/10/24.
*/

public class Mapp extends Application{
public void onCreate() {
super.onCreate();
File cacheFile=getExternalCacheDir();
ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽
.threadPoolSize(2)//线程池的数量
.threadPriority(4)
.memoryCacheSize(2*1024*1024)//设置内存缓存区大小
.diskCacheSize(20*1024*1024)//设置sd卡缓存区大小
.diskCache(new UnlimitedDiskCache(cacheFile))//自定义缓存目录
.writeDebugLogs()//打印日志内容
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理
.build();

    ImageLoader.getInstance().init(config);}public static DisplayImageOptions getImageOptions(){    DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder()            .cacheInMemory(true)//使用内存缓存            .cacheOnDisk(true)//使用磁盘缓存            .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式            .build();    return optionsoptions;}

}
Bean类
package com.example.refershscrollview;

import java.util.List;

/**
* author:Created by MingShao on 2017/10/24.
*/

public class Bean {

private int status;private String info;private List<DataBean> data;public int getStatus() {    return status;}public void setStatus(int status) {    this.status = status;}public String getInfo() {    return info;}public void setInfo(String info) {    this.info = info;}public List<DataBean> getData() {    return data;}public void setData(List<DataBean> data) {    this.data = data;}public static class DataBean {    private String news_id;    private String news_title;    private String news_summary;    private String pic_url;    public String getNews_id() {        return news_id;    }    public void setNews_id(String news_id) {        this.news_id = news_id;    }    public String getNews_title() {        return news_title;    }    public void setNews_title(String news_title) {        this.news_title = news_title;    }    public String getNews_summary() {        return news_summary;    }    public void setNews_summary(String news_summary) {        this.news_summary = news_summary;    }    public String getPic_url() {        return pic_url;    }    public void setPic_url(String pic_url) {        this.pic_url = pic_url;    }}

}

布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:ptr="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" tools:context="com.example.refershscrollview.MainActivity">    <com.handmark.pulltorefresh.library.PullToRefreshScrollView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/pull_rs"        android:orientation="vertical"        ptr:ptrDrawable="@drawable/default_ptr_flip"        ptr:ptrAnimationStyle="flip"         ptr:ptrHeaderBackground="#383838"        ptr:ptrHeaderTextColor="#FFFFFF"        >        <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/banner"                ></com.youth.banner.Banner>            <com.example.refershscrollview.Listview                android:layout_width="match_parent"                android:layout_height="match_parent"                android:id="@+id/lv"                ></com.example.refershscrollview.Listview>        </LinearLayout>    </com.handmark.pulltorefresh.library.PullToRefreshScrollView></RelativeLayout>
原创粉丝点击