无限轮播
来源:互联网 发布:mac bootcamp磁盘权限 编辑:程序博客网 时间:2024/06/05 09:55
package com.viewpager_lunbo.adapter;import android.content.Context;import android.os.Handler;import android.support.v4.view.PagerAdapter;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import com.viewpager_lunbo.bean.AllContent;import com.viewpager_lunbo.util.ImageLoaderUtil;import java.util.List;/** * Created by 李欣 on 2017/10/14. */public class MyPagerAdapter extends PagerAdapter { Context ct; List<AllContent.DataBean> list; Handler handler; public MyPagerAdapter(Context ct, List<AllContent.DataBean> list, Handler handler) { this.ct = ct; this.list = list; this.handler = handler; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(ct); //设置图片平铺整个控件 imageView.setScaleType(ImageView.ScaleType.FIT_XY); //使用网络获取的图片position%list.size()将position控制在集合长度之内 ImageLoader.getInstance().displayImage(list.get(position%list.size()).getImg(),imageView, ImageLoaderUtil.getdefaultoption()); //设置触摸事件 imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { int action = motionEvent.getAction();//获取手指的动作 switch (action){ case MotionEvent.ACTION_DOWN://按下时 handler.removeCallbacksAndMessages(null);//取消发送消息 break; case MotionEvent.ACTION_MOVE://移动时 handler.removeCallbacksAndMessages(null);//取消发送消息 break; case MotionEvent.ACTION_UP://抬起时 handler.sendEmptyMessageDelayed(0,2000);//继续发送 //handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_CANCEL://取消触摸 handler.sendEmptyMessageDelayed(0,2000);//继续发送 break; } return true;//返回true代表要自己处理 } }); //将图片添加到容器中 container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { //移除 container.removeView((View) object); }}
package com.viewpager_lunbo;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.ImageView;import android.widget.LinearLayout;import com.google.gson.Gson;import com.viewpager_lunbo.adapter.MyPagerAdapter;import com.viewpager_lunbo.bean.AllContent;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 ViewPager vp; private LinearLayout linear_layout; private MyPagerAdapter adapter; private List<AllContent.DataBean> list; private List<ImageView> images; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == 0){ vp.setCurrentItem(vp.getCurrentItem()+1);//下一张 //发送延迟 handler.sendEmptyMessageDelayed(0,2000); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = (ViewPager) findViewById(R.id.vp); linear_layout = (LinearLayout) findViewById(R.id.linear_layout); getData(); } private void getData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1"; URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = urlConnection.getInputStream(); String json = streamToString(inputStream, "utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //Toast.makeText(MainActivity.this,"++++"+s,Toast.LENGTH_SHORT).show(); Log.d("++++++++++",s); Gson gson = new Gson(); AllContent allcontent = gson.fromJson(s, AllContent.class); list = allcontent.getData(); setadapter(); initdiandian(list); //设置手动无限滑动 //vp.setCurrentItem(Integer.MAX_VALUE/2); //设置隔两秒钟自动轮播 handler.sendEmptyMessageDelayed(0,2000); //改变图片颜色 vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //根据下标改变图片的颜色 for(int i=0;i<images.size();i++){ //判断当前点击的是哪一个图片 if(i == position%images.size()){ ImageView imageView = images.get(i); imageView.setImageResource(R.drawable.img_shape_1); }else{ ImageView imageView = images.get(i); imageView.setImageResource(R.drawable.img_shape_2); } } } @Override public void onPageScrollStateChanged(int state) { } }); } }; asyncTask.execute(); } //设置点点 private void initdiandian(List<AllContent.DataBean> list) { //创建一个集合用力储存点点 images = new ArrayList<>(); //清空linear_layout linear_layout.removeAllViews(); for (int i = 0;i<5;i++){ //集合中的图片数量创建图片控件 ImageView imageView = new ImageView(this); if(i == 0){ imageView.setImageResource(R.drawable.img_shape_1); }else{ imageView.setImageResource(R.drawable.img_shape_2); } //将设置好图片的控件添加到集合中 images.add(imageView); //将图片添加到linear_layout中显示 linear_layout.addView(imageView); } } private String streamToString(InputStream inputStream, String charset) { try { //转换流 InputStreamReader inputStreamReader = new InputStreamReader(inputStream, charset); //缓冲字符流 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; //字符串缓冲区 StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null) { builder.append(s);//追加 } //关闭流 bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } private void setadapter() { if (adapter == null) { //创建适配器 adapter = new MyPagerAdapter(MainActivity.this,list,handler); //设置适配器 vp.setAdapter(adapter); } else { //刷新适配器 adapter.notifyDataSetChanged(); } }}
阅读全文
0 0
- viewpager无限轮播
- 无限轮播加点
- Viewpager无限轮播
- 无限轮播
- 图片无限轮播
- 无限轮播
- Viewpager无限轮播
- ViewPager无限轮播
- 无限轮播
- 无限轮播
- 无限轮播
- 无限轮播
- ViewPager无限轮播
- 无限轮播
- ViewPager无限轮播
- 无限轮播
- 无限轮播
- 无限轮播
- 作业10-14
- Java jdbc数据库连接池总结!
- OpenStack基本功能介绍
- 牛客模拟赛3-E绝对半径2051
- Python 线程,前台线程,后台线程生命周期
- 无限轮播
- 14-正则表达式/Pattern和Matcher/Math类/Random类/System类/SimpleDateFormat类/Calendar类
- iOS 11下适配问题
- 操作数栈
- Redis 未授权访问漏洞
- MapReduce\Hadoop\HDFS上\Hive学习笔记
- linux--语句
- 【图像处理】MATLAB:彩色图像介绍
- RecyclerView 实现listview和gridview布局(各自的子布局不同,网络数据)