无限轮播的实现
2016-06-28 19:25
225 查看
不少软件的主页都会有一个Banner,通俗的说就是广告条,可以无限轮播广告图片,那么是怎么实现的呢?
MainActivity代码如下:
完成以上代码就可以实现无限轮播图了。
MainActivity代码如下:
package com.bawei.rollview; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import com.bawei.rollview.adapter.MyPageAdapter; public class MainActivity extends Activity { private ViewPager vp; private LinearLayout ll; private String[] ImageUrl=new String[]{ "http://169.254.25.59:8080/a.bmp", "http://169.254.25.59:8080/b.bmp", "http://169.254.25.59:8080/c.bmp", "http://169.254.25.59:8080/d.bmp", "http://169.254.25.59:8080/e.bmp" }; private ArrayList<ImageView> imageList; Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { if (msg.what==0) { //拿到当前的页面索引值 int currentItem = vp.getCurrentItem(); currentItem++; //设置索引值 vp.setCurrentItem(currentItem); handler.sendEmptyMessageDelayed(0, 3000); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 vp = (ViewPager) findViewById(R.id.vp); ll = (LinearLayout) findViewById(R.id.ll); //设置适配器 vp.setAdapter(new MyPageAdapter(this,ImageUrl)); //初始化小圆点 initDots(); //设置当前页面的一个条目 vp.setCurrentItem(imageList.size()*3000); //为vp设置监听 vp.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { for (int i = 0; i < imageList.size(); i++) { if (i==position%ImageUrl.length) { imageList.get(i).setImageResource(R.drawable.focus); }else{ imageList.get(i).setImageResource(R.drawable.defaults); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); handler.sendEmptyMessageDelayed(0, 3000); } /** * 初始化小圆点 */ private void initDots() { imageList = new ArrayList<ImageView>(); imageList.clear();//清空集合中的元素 ll.removeAllViews();//移除布局中的控件 for (int i = 0; i < ImageUrl.length; i++) { //创建一个ImageView控件 ImageView imageView = new ImageView(this); if (i==0) { //点亮的小圆点 imageView.setImageResource(R.drawable.focus); }else{ //默认的小圆点 imageView.setImageResource(R.drawable.defaults); } LayoutParams params=new LayoutParams(20, 20); params.setMargins(5, 0, 5, 0); //将圆点添加到集合中 imageList.add(imageView); //将圆点添加到布局中 ll.addView(imageView,params); } } }下面是adapter的代码:
package com.bawei.rollview.adapter; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.lidroid.xutils.BitmapUtils; public class MyPageAdapter extends PagerAdapter { private Context context; private String[] ImageUrl; public MyPageAdapter(Context context, String[] imageUrl) { super(); this.context = context; ImageUrl = imageUrl; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView image = new ImageView(context); BitmapUtils bitmap = new BitmapUtils(context); bitmap.display(image, ImageUrl[position%ImageUrl.length]); container.addView(image); return image; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } }
完成以上代码就可以实现无限轮播图了。
相关文章推荐
- MyBatis <if>标签的一些问题
- CentOS 6.8操作系统安装PostGIS笔记
- 多态,前提,特点,好处,弊端
- Java三大特性之---多态
- mysql统计
- Android AndFix 热修复框架
- redis之ziplist
- ComboBox数据绑定初始化值
- Oracle Blob数据保存为文件
- 设计模式---Builder模式
- Writing Skills for Academic English
- Android DrawerLayout实现侧拉菜单
- C++编程实现生产者/消费者模型(linux系统编程)
- java,方法重写,final
- ueditor 简单/复杂工具栏切换
- Git Bash
- Orace expdp filesize compression
- surfaceview-自定義畫圖或顯示圖片
- View setDrawingCacheEnabled 缓存
- TCP/IP 网络协议基础