ViewPager图片无限轮播加轮播指示器
来源:互联网 发布:python爬虫源码 编辑:程序博客网 时间:2024/06/01 09:07
要想达到加载网络图片实现无限轮播的效果,首先,你需要定义一个比较合理的布局
<RelativeLayout android:layout_width="match_parent" android:layout_height="200dp"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="200dp"/> <LinearLayout android:id="@+id/linear" android:orientation="horizontal" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>
以上就是一个相对布局中用了一个ViewPager用来加载图片,靠近相对布局控件的底部有一个相对布局用来存储轮播指示器。这些工作做好了之后,就需要设置联网权限和添加一些图片加载框架了 ,在这里不一一说明。
我这里找了三张网络图片:
List<String> imageList= Arrays.asList("http://cdn.duitang.com/uploads/blog/201308/18/20130818150526_Ru2Bk.thumb.600_0.png", "http://www.bkill.com/u/info_img/2012-09/02/2012083116140522302.jpg", "http://www.it165.net/uploadfile/2011/1218/20111218070928328.jpg");
还需要给vp设置一个适配器
//ViewPager的适配器类 public class MyPagerAdapter extends PagerAdapter { @Override public int getCount() { //数量为2147483647 return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView image = new ImageView(MainActivity.this); ImageLoader.getInstance().displayImage(imageList.get(position % imageList.size()),image,MyApplication.getOptions()); container.addView(image); return image; } }
因为下文要利用线程发送空消息,因此还需要定义一个handler
//定义Handler Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); vp.setCurrentItem(page); } };
接下来设置轮播方法
private void autoplay() { new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //增加图片下标玛 page++; //发送空消息 handler.sendEmptyMessage(0); } } }.start(); } //加载图片的方法 public void initView(){ vp.setAdapter(new MyPagerAdapter()); linear = (LinearLayout)findViewById(R.id.linear); for (int i = 0; i<imageList.size();i++){ View doView = new View(this); //小圆点的大小 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(30,30); //小圆点左边距和右边距 params.rightMargin = 10; params.leftMargin = 10; //加载小圆点到视图中 doView.setLayoutParams(params); //当显示的图片的下标和i相等时,显示选中状态 if(i == 0){ doView.setBackgroundResource(R.drawable.shape_select); //否则。 }else { doView.setBackgroundResource(R.drawable.select_normal); } //把布局加载到linearlayouot linear.addView(doView); } vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //图片改变后,让小圆点改变为当前下标状态 linear.getChildAt(position % imageList.size()).setBackgroundResource(R.drawable.shape_select); //其他的改变为默认 linear.getChildAt(oldPositon % imageList.size()).setBackgroundResource(R.drawable.select_normal); //将当前下标赋给之前的下标 oldPositon = position; } @Override public void onPageScrollStateChanged(int state) { } }); }
做完这些之后,在activity的相关方法中调用一下即可。
阅读全文
1 0
- ViewPager图片无限轮播加轮播指示器
- viewpager自添加指示器,无限轮播
- ViewPager 指示器
- ViewPager指示器
- ViewPager指示器
- ViewPager 指示器
- ViewPager指示器
- ViewPager指示器
- ViewPager指示器
- ViewPager 指示器
- ViewPager Incidator(ViewPager指示器)
- handler+viewpager无限轮播图片
- ViewPager的图片无限轮播
- ViewPager网络加载图片+无限轮播
- ViewPager图片无限自动轮播
- ViewPager无限轮播(网络图片
- ViewPager加载图片自动无限轮播
- ViewPager无限轮播+GridView图片展示
- spring源码分析,重新认识spring五(内功心法 从思想上说明 spring 常用的几种设计模式,漫谈)
- jsp对dao层的工具类
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- Notepad++ 外部样式表css文件引用不成功
- HDU 2647 Reward(拓扑排序)
- ViewPager图片无限轮播加轮播指示器
- Linux数字权限解释
- LeetCode 22. Generate Parentheses (Medium)
- Stanley Druckenmiller德鲁肯米勒
- 使用 Azure 门户创建 Linux 虚拟机
- 9.23/24周末作业
- 比特币早期投资家:没有人能够阻止其发展 TechWeb 09-27 09:10 凤凰科技讯 据CNBC网站北京时间9月27日报道,风险投资家、“Social+Capital”基金创始人Chamath
- linux软件的安装,更新与卸载
- 十分钟搞定pandas(官方学习文档的译文)