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>
- Banner加refershscrollview
- banner加PullToRefreshListView
- ListView加头部Banner基本思路
- SWIFT用ScrollView加图片制作Banner
- Banner轮播图(需要加的在后面 )
- Banner
- banner
- Banner
- Banner
- Banner
- banner
- banner
- banner
- banner
- banner
- Banner
- banner
- Banner
- angular常用内置指令
- CNN中全连接层是什么样的?
- angularJs中的jqLite
- vue内置指令、自定义指令及自定义过滤器
- C# 模拟键盘输入
- Banner加refershscrollview
- gulp的使用
- angular自定义指令
- angular中内置的九种过滤器
- angularjs服务
- python计算一段字符串字母的和(a,b分别为1,2)
- 交换机常用命令——查看修改系统时间,查看交换机SN
- angularjs路由
- 简单了解ES6的语法