Android 自动轮播图 bnner的实现原理~
来源:互联网 发布:java程序编译原理 编辑:程序博客网 时间:2024/05/23 19:15
1.自动轮播的View布局
<RelativeLayout android:layout_width="match_parent" android:layout_height="140dp" > <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/lld" android:layout_width="match_parent" android:layout_height="20dp" android:orientation="horizontal" android:layout_alignParentBottom="true" android:gravity="center" > </LinearLayout> </RelativeLayout>2.设置适配器完了 调用Timer倒计时方法
//初始化viewpage LinearLayout
private ViewPager vp; private LinearLayout ll; private List<ImageView> listIv=new ArrayList<>(); private int curr; private List<Integer> list; private Timer timer; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); } };//往集合里面 添加数据
private void addData() { list = new ArrayList<>(); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); list.add(R.mipmap.ic_launcher); }
//倒计时方法
/** * 倒计时 方法 */ private void initTimer() { timer = new Timer(); TimerTask task=new TimerTask() { @Override public void run() { handler.sendEmptyMessage(0); } }; timer.schedule(task,2000,2000); }
/** * 加点 */ private void jiadian() { for (int i = 0; i < list.size(); i++) { ImageView iv=new ImageView(getActivity()); if(i==0){ iv.setImageResource(R.drawable.select); }else { iv.setImageResource(R.drawable.nomore); } //ll.removeAllViews(); LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(15,15); params.setMargins(5,0,5,0); ll.addView(iv,params); listIv.add(iv); } }
/** * viewPage设置 */ private void viewPage() { //设置适配器 vp.setAdapter(new PagerAdapter() { @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 iv=new ImageView(getActivity()); iv.setScaleType(ImageView.ScaleType.CENTER_CROP); iv.setImageResource(list.get(position%list.size())); container.addView(iv); return iv; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); }
/** * 添加 自动轮播的 所有布局 以及 加点 等操作 */ private void tianjiaView() { jiadian(); //加点 viewPage();//ViewPage 适配器 vp.setCurrentItem(10000); curr=vp.getCurrentItem(); //设置监听 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 <listIv.size() ; i++) { if(position%list.size()==i){//判断选中当前 listIv.get(i).setImageResource(R.drawable.select); }else { listIv.get(i).setImageResource(R.drawable.nomore); } } } @Override public void onPageScrollStateChanged(int state) { } }); }//最后关闭线程
@Override public void onDestroy() { super.onDestroy(); timer.cancel(); }
//这个是加载到ListView 头部 , 在哪个布局 findViewByid
View hand=View.inflate(getActivity(),R.layout.viewpge,null); vp= hand. findViewById(R.id.vp); ll= hand. findViewById(R.id.lld); //添加布局 tianjiaView(); ada.addHeaderView(hand);
//倒计时
initTimer();
//先走添加布局的方法 tianjiaView() -> 设置适配器 加载完数据 页面展示出来 ->调用倒计时方法
阅读全文
1 0
- Android 自动轮播图 bnner的实现原理~
- Android 实现带指示器的自动轮播式ViewPager
- Android 实现带指示器的自动轮播式ViewPager
- Android之Banner实现无限自动轮播图
- Android实现ViewPager自动轮播
- XBanner的使用实现无限自动轮播图
- 自动轮播的viewPager实现
- banner自动轮播的简单实现
- Handler实现的无限自动轮播
- Android 带圆点的自动轮播
- Android 自动轮播的Viewpager
- android之自动轮播的ViewPager
- Android 带圆点的自动轮播
- viewPager 实现banner图 自动轮播
- 自动轮播图简单实现
- View pager实现自动轮播图
- okhttp+banner实现自动轮播图
- 自动轮播图
- Redis-3.2.1主从故障测试实例 配置文件如下
- PHP各种函数的声明及应用
- Linux 下何时输出缓冲区的问题
- RGBD-SLAM总结
- Linux系统下查看端口占用以及结束某个进程
- Android 自动轮播图 bnner的实现原理~
- 在vue项目中 如何定义全局变量 全局函数
- Struts2 自定义拦截器
- Android自定义view----顶部标题栏2
- 在滴滴,我是如何指数级提升开发技术的?---转自星光社的戴铭
- 简单好用、含历史搜索记录的搜索框
- 加载properties文件的6种方法
- Java中的泛型程序设计
- Fisher Vector