Android 实现滚动图片

本文介绍如何在Android中实现滚动广告效果。通过创建一个伪无限的list,并在头部和尾部添加元素来实现无缝滚动。具体实现包括在列表最后一项后添加第一项,在第一项前添加最后一项,当滑动到附加元素时切换到实际的第一或最后一项。文中附带了简单的UI布局文件和代码示例。
摘要由CSDN通过智能技术生成

这两天有朋友在询问滚动广告怎么实现,然后我对项目中的滚动功能代码进行研究,因为之前向前辈讨论过这种无限滚动的原理。

1.设置一个伪无限的list,将当前图标显示在中间然后进行无线滚动。

2.在头部和尾部加上图标,也就是说在最后一个后面加上第一个对象,在第一个之前加上之前的最后的一个对象,当滑到加上去的对象的时候就强制设置成第一个或者最后一个对象。

自己写了一个小demo,然后代码贴一下吧。

public class MainActivity extends Activity implements ViewPager.OnPageChangeListener{

    private List<ImageView> mViewList;
    private PageAdapter mAdapter;
    private CustomViewPager pageView;
    private LinearLayout _llPoints;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_header);
        pageView= (CustomViewPager)findViewById(R.id.vp_main_list_head);
        _llPoints = (LinearLayout) findViewById(R.id.ll_main_head_points);

        //数据展示
        mViewList=new ArrayList<ImageView>();
        int[] image=new int[]{R.drawable.android_guide_step_4,R.drawable.android_guide_step_1,R.drawable.android_guide_step_2,R.drawable.android_guide_step_3,R.drawable.android_guide_step_4,R.drawable.android_guide_step_1};
        for(int i=0;i<image.length;i++){
            ImageView imageView=new ImageView(this);
            imageView.setBackgroundResource(image[i]);
            mViewList.add(imageView);
        }
        mAdapter=new PageAdapter(mViewList,this);
        pageView.setAdapter(mAdapter);

        pageView.addOnPageChangeListener(this);
        Log.e("-------", mViewList.size() + "");
        setPoints(true);
    }

    private void setPoints(boolean isNew) {
        if (isNew){
            _llPoints.removeAllViews();
        }
        if (_llPoints.getChildCount() == 0) {
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(Util.dp2px(this,5), Util.dp2px(this,5));
            for (int i = 0; i < mViewList.size() - 2; i++) {
 //添加viewpager下方的点
                params.leftMargin = Util.dp2px(this,5);
                ImageView imageView = new ImageView(this);
                if (mViewList.size() - 3 == i) {
                    imageView.setImageResource(R.drawable.point_selected);
                } else {
                    imageView.setImageResource(R.drawable.point);
                }
                _llPoints.addView(imageView, params);
            }
        }
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值