博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPager+seekBar的联动效果
阅读量:7066 次
发布时间:2019-06-28

本文共 4054 字,大约阅读时间需要 13 分钟。

主要实现的效果是,拖动seekbar的时候,viewpager跟随滑动。

拖动Viewpager的时候,seekbar进度条跟随滑动。

直接上代码

复制代码

主要是两个监听

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {    @Override    public void onPageScrolled(int i, float v, int i1) {        seekBar.setProgress((int)((i+1+v)*a));    }    @Override    public void onPageSelected(int i) {        seekBar.setProgress((int)((i+1)*a));    }    @Override    public void onPageScrollStateChanged(int i) {    }});复制代码

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {    @Override    public void onProgressChanged(SeekBar seekBar, int i, boolean b) {        if (viewPager.isFakeDragging()){            int offset = (int)((maxOffset/100.0)*i);            int dragby = offset - currentOffset;            viewPager.fakeDragBy(dragby);            currentOffset = offset;        }    }    @Override    public void onStartTrackingTouch(SeekBar seekBar) {        maxOffset = viewPager.getWidth();        viewPager.beginFakeDrag();    }    @Override    public void onStopTrackingTouch(SeekBar seekBar) {        viewPager.endFakeDrag();    }});复制代码

完整代码

public class MainActivity extends AppCompatActivity{    private SeekBar seekBar;    private ViewPager viewPager;    int maxOffset;    int currentOffset;    private int[] imageRIds = {            R.drawable.a,            R.drawable.b,            R.drawable.c,            R.drawable.d,            R.drawable.e,    };    float a;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        a = (float)100/imageRIds.length;        viewPager = findViewById(R.id.viewpager);        seekBar = findViewById(R.id.progress);        viewPager.setAdapter(new BannerAdapter(imageRIds));        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int i, float v, int i1) {                seekBar.setProgress((int)((i+1+v)*a));            }            @Override            public void onPageSelected(int i) {                seekBar.setProgress((int)((i+1)*a));            }            @Override            public void onPageScrollStateChanged(int i) {            }        });        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            @Override            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {                if (viewPager.isFakeDragging()){                    int offset = (int)((maxOffset/100.0)*i);                    int dragby = offset - currentOffset;                    viewPager.fakeDragBy(dragby);                    currentOffset = offset;                }            }            @Override            public void onStartTrackingTouch(SeekBar seekBar) {                maxOffset = viewPager.getWidth();                viewPager.beginFakeDrag();            }            @Override            public void onStopTrackingTouch(SeekBar seekBar) {                viewPager.endFakeDrag();            }        });    }    public class BannerAdapter extends PagerAdapter{        private int[] imageReaIds;        public BannerAdapter(int[] imageReaIds){            this.imageReaIds = imageReaIds;        }        @Override        public int getCount() {            return imageReaIds.length;        }        @Override        public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {            return view == o;        }        @NonNull        @Override        public Object instantiateItem(@NonNull ViewGroup container, int position) {            ImageView imageView = new ImageView(container.getContext());            imageView.setBackgroundResource(imageReaIds[position]);            container.addView(imageView);            return imageView;        }        @Override        public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {            container.removeView((View)object);        }    }}复制代码

转载于:https://juejin.im/post/5b7d26cd6fb9a019f709ad65

你可能感兴趣的文章
Java Web笔记 – Servlet中的Filter过滤器的介绍和使用 编写过滤器
查看>>
我奋斗了18年,不是为了和你一起喝咖啡
查看>>
gearman简单介绍
查看>>
《Typecript 入门教程》 3、接口
查看>>
jsp的几种跳转比较
查看>>
用oracle查询当前数据库中的所有表
查看>>
决心书
查看>>
git 从版本控制中删除文件及.gitignore的用法
查看>>
cacti安装
查看>>
Spark核心概念
查看>>
Kali***(二)之被动信息收集——搜索引擎
查看>>
组策略参考文档1-共享打印机
查看>>
Linux的包管理工具介绍
查看>>
程序员如何成为架构师
查看>>
fiddler抓包之关于connect连接
查看>>
MySQL,binlog2sql回滚操作测试
查看>>
CentOS7下yum安装Jenkins
查看>>
简练软考知识点整理-确认范围管理
查看>>
不懂这几点就落后了:Android、Python工程师必读!
查看>>
Werkzeug 教程
查看>>