实现轮循(手动版)广告条(Banner)

*实现思路:
1.准备Banner所需要的图片资源
2.准备主页面(MainActivity)的布局
    PS : 自己画滑动页面的小圆圈,写一个选择器
3.准备主页面的适配器 (继承自PagerAdapter)
4.在主界面中为ViewPager的滑动写切换事件
5.实现自动的切换页面,以及让小圆圈跟着滑动(用到的知识有:  Handler)
1.主页面的布局
特别地:我们在这里采用了selector对于RadioButton的checked状态的选择
             A.在Style文件中部署自定义的style.
               
<!--引用res/drawable/Selector(选择器)定义按钮的外观-->
               <item name="android:button">@drawable/selector_radiobutton</item>
             B.在drawable里面对选择器做样式的设计(画实心圆和空心圆)
                Selector:
<selector xmlns:android="http://schemas.android.com/apk/res/android">                
<item android:drawable="@drawable/shape_circle_solid" android:state_checked="true"/>
              <item android:drawable="@drawable/shape_circle_stroke" android:state_checked="false"/>
            </selector>

              Shape:
android:shape="oval"
>
              A。<!--实心正圆-->
              <size
android:width="10dp"
                android:height="10dp"
/>
             <solid android:color="#0f0"/
             B。<!--空心正圆-->
                <size
android:width="10dp"
                    android:height="10dp
/>
                <stroke  android:color="#0f0"
                    android:width="1dp"
 />

3.准备主页面的适配器(继承自PagerAdapter)

    重写4个抽象方法 
    getCount()、 isViewFromObject()、
    instantiateItem(){
ImageView iv  = new ImageView(context);
iv.setImageResource(imgs[position]);
iv.setScaleType(ImageView.ScaleType.CENTER);
//这一句话很重要,有了才能把View加到ViewPager上
container.addView(iv);  
return iv;
    }
    destoryItem(){
         container.removeView((ImageView)object);
    }

vp_banner.addOnPageChangeListener(new ViewPager.simpleOnPageChangeListener)(){
        onPageSelected(int position){
            //获得当前位置的RadioButton
            RadioButton currRdo = rg.getChildAt(position);
        }
});

4.在主界面中为ViewPager的滑动写切换事件
vp_banner.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
//获得当前位置的RadioButton
RadioButton currRdo = (RadioButton) rg.getChildAt(position);
//设置为选中
currRdo.setChecked(true);
}
});
5.实现自动的切换页面,以及让小圆圈跟着滑动
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
//获取消息,进行图片的自动切换
switch (msg.what){
case 1:
//获得当前的显示页面
int currItem = vp_banner.getCurrentItem();
//设置下一张页面的位置(利用求余的思想)
int position = (currItem+1)%imgs.length;
//设置当前要显示的页面
vp_banner.setCurrentItem(position);
//获得当前位置的RadioButton
RadioButton currRdo = (RadioButton) rg.getChildAt(position);
//设置为选中
currRdo.setChecked(true);
//每隔2s切换一张图片
sendEmptyMessageDelayed(1,2000);
break;
default:
break;
}
}
};

@Override
protected void onResume() {
super.onResume();
//Handler来发送轮循广告的消息,一旦发送并接收到该消息,就自动切图片
handler.sendEmptyMessageDelayed(1,2000); //为了页面流畅
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值