安卓画廊效果(ViewPager)

这一篇只讲应用不讲原理,看原理的同学可以关了。
github地址:https://github.com/wangshangyao/BaseBannerView

在github上把项目down下来,然后将项目中的Bannder以Model的形式导入你的项目。
首先:
在你的布局中声明控件

<com.yao.banner.BannerView
        android:id="@+id/bannerView"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:bannerPageAlpha="1.0"
        app:bannerPageMargin="2dp"
        app:bannerPagePercent="0.9"
        app:bannerPageScale="1"
        app:bannerAnimScroll="true"
        app:bannerAutoScroll="true"
        app:bannerScrollDuration="4000"
        app:bannerAnimDuration="1500"/>

然后我就不用多说了吧,找控件,创建适配器,并且我这里除了创建了一个适配器的基类BannerBaseAdapter以外,我还创建了一个实现类,可以直接用的那种,叫BannerAdapter。

这是适配器的实现类:

public class BannerAdapter extends BannerBaseAdapter<BannerBean> {

    public BannerAdapter(Context context) {
        super(context);
    }

    @Override
    protected int getLayoutResID() {
        return R.layout.item_banner;
    }

    @Override
    protected void convert(View convertView, BannerBean data) {
        setImage(R.id.pageImage, data.pic);
        setText(R.id.pageText, data.title);
    }
}

然后创建出适配器然后将你的数据给适配器:

BannerAdapter mAdapter = new BannerAdapter(this);
mAdapter.setData(arr);

还有设置监听:

mAdapter.setOnPageTouchListener(new BannerBaseAdapter.OnPageTouchListener<BannerBean>() {
            @Override
            public void onPageClick(int position, BannerBean bannerBean) {
                // 页面点击
                Toast.makeText(MainActivity.this, bannerBean.title, Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onPageDown() {
                // 按下,可以停止轮播
                //   Toast.makeText(BannerActivity.this, "按下", Toast.LENGTH_SHORT).show();
                bannerview.stopAutoScroll();
            }
            @Override
            public void onPageUp() {
                // 抬起开始轮播
                //  Toast.makeText(BannerActivity.this, "抬起", Toast.LENGTH_SHORT).show();
                bannerview.startAutoScroll();
            }
        });

下面贴一下使用的所有代码:
MainActivity:

public class MainActivity extends AppCompatActivity {

    private BannerView bannerview;
    private BannerAdapter mAdapter;

    private List<BannerBean> arr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bannerview = (BannerView) findViewById(R.id.bannerView);
        bannerview.setAdapter(mAdapter = new BannerAdapter(this));
        arr = new ArrayList<>();

        getData();

        mAdapter.setData(arr);

        mAdapter.setOnPageTouchListener(new BannerBaseAdapter.OnPageTouchListener<BannerBean>() {
            @Override
            public void onPageClick(int position, BannerBean bannerBean) {
                // 页面点击
                Toast.makeText(MainActivity.this, bannerBean.title, Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onPageDown() {
                // 按下,可以停止轮播
                //   Toast.makeText(BannerActivity.this, "按下", Toast.LENGTH_SHORT).show();
                bannerview.stopAutoScroll();
            }
            @Override
            public void onPageUp() {
                // 抬起开始轮播
                //  Toast.makeText(BannerActivity.this, "抬起", Toast.LENGTH_SHORT).show();
                bannerview.startAutoScroll();
            }
        });
    }

    public void getData() {
        arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155662&di=45bcb98c3f596d92e1615dba67e1f3fc&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F131%2F26%2F40P9YQ26TB7H_1000x500.jpg","我是第一页"));
        arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155750&di=8ef2360d0635e961f888542ce02947cf&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F215%2F45%2F04L5VRR21C5W.jpg","我是第二页"));
        arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155750&di=0d9d331fdc00ee7631236f29f3bdaac7&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2013%2F255%2FHP4C7KBZQ0YP.jpg","我是第三页"));
        arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155749&di=4d10f0073993bd92520dfa469eac76c2&imgtype=0&src=http%3A%2F%2Ff.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F5ab5c9ea15ce36d3c0a28ce330f33a87e850b1ba.jpg","我是第四页"));
        arr.add(new BannerBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1511925155749&di=644e326706663155cc2ac3350bbaa0c7&imgtype=0&src=http%3A%2F%2Fh.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2Fd000baa1cd11728be0f1acf0c2fcc3cec2fd2c07.jpg","我是第五页"));
    }
}

到这里画廊效果就实现了,贴张效果图。
这里写图片描述

如果有什么扩展的需求或者我有什么遗失和错误欢迎评论,我会第一时间回复和更新。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值