无限轮播+GridView
来源:互联网 发布:u盘做linux启动盘 编辑:程序博客网 时间:2024/06/06 02:26
主Activtiy
public class MainActivity extends AppCompatActivity { ViewPager vp;//用于实现轮播 GridView gv;// NewsUtils Ns; bean bn; List<bean.DataBean.EssayBean> list1; List<ImageView> list; LinearLayout linearLayout; private List<ImageView> imagesList; //用于实现无限轮播 private Handler handler = new Handler() { public void handleMessage(Message msg) { //获取当前条目 int index = vp.getCurrentItem(); //向右轮播 vp.setCurrentItem(index += 1); //间隔2秒 handler.sendEmptyMessageDelayed(3, 3000); } ; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = (ViewPager) findViewById(R.id.vp); gv = (GridView) findViewById(R.id.gv); linearLayout = (LinearLayout) findViewById(R.id.linear_layout); bn = new bean(); getBeanByGson();//轮播 getGridViewGson();//GridView //viewPager页面改变的监听事件 vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //如果选中了这一页,,,当前小圆点红色,,,否则绿色 for (int i = 0; i < imagesList.size(); i++) { if (i == position % imagesList.size()) { imagesList.get(i).setImageResource(R.drawable.doc_select); } else { imagesList.get(i).setImageResource(R.drawable.doc_select_no); } } } @Override public void onPageScrollStateChanged(int state) { } }); } //轮播图的解析 public void getBeanByGson() { // 使用该方法得到了一个 Json的字符输入流 new AsyncTask<String, String, String>() { @Override protected String doInBackground(String... strings) { String reader = NewsUtils.getNetDataStr(); return reader; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); // 使用Gson把该字符输入流转换成JavaBean Gson gson = new Gson(); bn = gson.fromJson(s, bean.class); list = new ArrayList<ImageView>(); list1 = new ArrayList<bean.DataBean.EssayBean>(); list1.addAll(bn.getData().getEssay()); for (int i = 0; i < list1.size(); i++) { ImageView imageView = new ImageView(MainActivity.this); imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(list1.get(i).getAuthor().get(0).getWeb_url(), imageView); list.add(imageView); } initDoc(); MyPageApdata myPagerAdapter = new MyPageApdata(list); vp.setAdapter(myPagerAdapter); handler.sendEmptyMessageDelayed(3, 3000); } }.execute(); } //GridView的适配器 public void getGridViewGson() { // 使用该方法得到了一个 Json的字符输入流 new AsyncTask<String, String, String>() { @Override protected String doInBackground(String... strings) { String reader = NewsUtils.getNetDataStr(); return reader; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); // 使用Gson把该字符输入流转换成JavaBean Gson gson = new Gson(); bn = gson.fromJson(s, bean.class); list = new ArrayList<ImageView>(); list1 = new ArrayList<bean.DataBean.EssayBean>(); list1.addAll(bn.getData().getEssay()); for (int i = 0; i < list1.size(); i++) { ImageView imageView = new ImageView(MainActivity.this); imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(list1.get(i).getAuthor().get(0).getWeb_url(), imageView); list.add(imageView); } GridViewApdate myAdapter = new GridViewApdate(list, MainActivity.this, list1); gv.setAdapter(myAdapter); } }.execute(); } private void initDoc() { //首先需要一个集合记录这些小圆点的图片,,,,当页面切换的时候,可以从集合中取出imageView进行显示图片的设置 imagesList = new ArrayList<>(); linearLayout.removeAllViews();//清空/移除所有的view for (int i = 0; i < list.size(); i++) { ImageView imageView = new ImageView(MainActivity.this); if (i == 0) {//显示第一页,,,红的 imageView.setImageResource(R.drawable.doc_select); } else {//绿的 imageView.setImageResource(R.drawable.doc_select_no); } //添加到集合 imagesList.add(imageView); //加入到线性布局中显示 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(5, 0, 5, 0); linearLayout.addView(imageView, params); //把小圆点添加到线性集合中 } }}
数据请求包
public class NewsUtils { //ListView public static String getNetDataStr() { String json = null; try { URL url = new URL( "http://v3.wufazhuce.com:8000/api/reading/index/?version=3.5.0&platform=android"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len = -1; byte[] buff = new byte[1024]; while((len = is.read(buff)) != -1){ bos.write(buff,0,len); } json = new String(bos.toByteArray()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return json; }}
无限轮播适配器
public class MyPageApdata extends PagerAdapter { List<ImageView> list = new ArrayList<>(); public MyPageApdata(List<ImageView> list) { this.list = list; } @Override public int getCount() { return Integer.MAX_VALUE;//Integer.MAX_VALUE可实现无限轮播 } @Override public boolean isViewFromObject(View view, Object object) { return view == object;//固定的 } @Override public Object instantiateItem(ViewGroup container, int position) { position %= list.size(); container.addView(list.get(position)); return list.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }}
GridView适配器
public class GridViewApdate extends BaseAdapter { List<ImageView> list; Context context; List<bean.DataBean.EssayBean>list1; public GridViewApdate(List<ImageView> list, Context context, List<bean.DataBean.EssayBean> list1) { this.list = list; this.context = context; this.list1 = list1; } @Override public int getCount() { if (list != null) { return list.size(); } return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null){ convertView = View.inflate(context, R.layout.gridgiew, null); holder = new ViewHolder(); holder.tv1_gridview = (TextView) convertView.findViewById(R.id.tv1_gridview); holder.tv2_gridview = (TextView) convertView.findViewById(R.id.tv2_gridview); holder.iv_gridview = convertView.findViewById(R.id.iv_gridview); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } holder.tv1_gridview.setText(list1.get(position).getAuthor().get(0).getSummary()); holder.tv2_gridview.setText(list1.get(position).getAuthor().get(0).getFans_total()); ImageLoader.getInstance().displayImage(list1.get(position).getAuthor().get(0).getWeb_url(),holder.iv_gridview); return convertView; } public void setData(List<ImageView> list){ this.list = list; notifyDataSetChanged(); } static class ViewHolder { ImageView iv_gridview; TextView tv1_gridview,tv2_gridview; }}小圆点需要的配置文件在Drawble第一个<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ff0000"/> <corners android:radius="5dp"/> <size android:height="10dp" android:width="10dp"/></shape>第二个<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#00ff00"/> <corners android:radius="5dp"/> <size android:height="10dp" android:width="10dp"/></shape>ImageLode的配置public class MyApps extends Application { @Override public void onCreate() { super.onCreate(); File file = new File(Environment.getExternalStorageDirectory().getPath()+"Images0718"); ImageLoaderConfiguration conn = new ImageLoaderConfiguration.Builder(this) .threadPoolSize(5) .memoryCacheExtraOptions(80, 80) .memoryCacheSize(2 * 1024 * 1024) .threadPriority(1000) .diskCacheFileNameGenerator(new Md5FileNameGenerator()) .diskCacheSize(50 * 1024 * 1024) .build(); ImageLoader.getInstance().init(conn); }}温馨提示小圆点记得加布局文件,ImageLode记得在清单文件中配置,记得加网络权限
阅读全文
1 0
- 无限轮播+GridView
- banner无限轮播+gridview
- ViewPager无限轮播+GridView图片展示
- ListView布局嵌套Viewpager+gridview创建无限轮播+分类
- ViewPager无限轮播+圆点+GridView数据展示
- viewpager无限轮播
- 无限轮播加点
- Viewpager无限轮播
- 无限轮播
- 图片无限轮播
- 无限轮播
- Viewpager无限轮播
- ViewPager无限轮播
- 无限轮播
- 无限轮播
- 无限轮播
- 无限轮播
- ViewPager无限轮播
- Qt5开发学习之事件(十三)
- 《C++ Concurrency in Action》笔记4 hardware_concurrency()
- Linux系统下FTP服务器的搭建
- 九度题目1156:谁是你的潜在朋友
- android实现和web一样的圆角
- 无限轮播+GridView
- Handler机制
- word中的修订的使用
- 数据结构-双向循环链表
- jQuery DOM 元素方法
- CS229机器学习个人笔记(2)——Linear Regression with Multiple Variables
- Palindrome Linked List 回文链表
- QT渐变-QLinearGradient,QRadialGradient,QConicalGradient)
- 实现XlistView的简洁方法PullToRefreshListView