实现Button和ViewPager的对应滑动

我们在浏览网页时,通常会出现按到不同按钮划出不同的页面,或者滑动不同的页面,对应的的按钮会出现不同的效果。这里页面的滑动就用到了ViewPager。

首先在主xml文件里定义一个viewPager标签,我们把滑动的页面的内容就放在这个标签里面。

android.support.v4.view.ViewPager
        android:id="@+id/main_viewpager"
        style="@style/main_viewpager_style"
        android:layout_below="@id/category_line" >
    </android.support.v4.view.ViewPager>

然后自定义一个Adapter,把要显示在viewPager里的东西设置好,在前台调用Adapter即可。

package com.example.jrnews;


import java.util.ArrayList;


import com.example.jrnews.R;


import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;


public class ViewPagerAdapter extends PagerAdapter {


private ArrayList<View> nList;
private int len;
private Context nContext;
private int[] imgs=new int[] {
R.drawable.help_detail1,
R.drawable.help_detail2,
R.drawable.help_detail3,
R.drawable.help_detail4,
R.drawable.help_detail5
};


public ViewPagerAdapter(int len, Context nContext) {
super();
this.len=len;
this.nContext = nContext;
//调用函数
initViewPagerData();
}


//设置每次滑动的图片
public void initViewPagerData(){
this.nList=new ArrayList<View>();
for(int i=0;i<len;i++){
ImageView imgView=new ImageView(nContext);
imgView.setScaleType(ScaleType.FIT_XY);
imgView.setImageResource(imgs[i%imgs.length]);
nList.add(imgView);
}
}

@Override
public int getCount() {

return this.nList==null?0:this.nList.size();
}


@Override
public boolean isViewFromObject(View arg0, Object arg1) {

return arg0==arg1;
}


@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(this.nList.get(position));
}


@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(this.nList.get(position));
return this.nList.get(position);
}
}


然后在主Activity里面非onCreate方法里面,调用Adapter,

viewAdapter=new ViewPagerAdapter(channelList.size(), this);
viewPager.setAdapter(viewAdapter);

最后一步,也是最重要的一步,是实现按钮和页面的同步滑动,那么就要为按钮设置监听,为页面设置监听。

//当点击滚动栏的数据,viewpager滑动出不同的页面
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
viewPager.setCurrentItem(checkedId);
}
});


//当viewpager滑动出不同的页面,上面的滚动栏选中对应的数据
viewPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int position) {
RadioButton rb=(RadioButton) findViewById(position);
rb.setChecked(true);
//设置被选中的滚动栏数据每次都能显示在固定的位置
int x=rb.getLeft()+rb.getWidth()/2-2*dm.widthPixels/3;
scrollView.smoothScrollTo(x, 0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值