Android 使用ViewPager实现导航页面

PagerAdapter类

/**
 * 作者:created by meixi
 * 邮箱:[email protected]
 * 日期:2018/7/23 17
 */

public class GuidePageAdapter extends PagerAdapter {
    private List<View> views;
    public GuidePageAdapter(List<View> views) {
        this.views = views;
    }

    @Override
    public int getCount() {
        if (views != null) {
            return views.size();
        }
        return 0;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return (arg0 == arg1);
    }

    @Override
    public void destroyItem(View view, int arg1, Object object) {
        ((ViewPager) view).removeView(views.get(arg1));
    }

    @Override
    public Object instantiateItem(final View view, final int current) {
        ((ViewPager) view).addView(views.get(current));
        return views.get(current);
    }

}

导航类layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/vp_guide"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/myposition"
        android:layout_width="40dp"
        android:layout_height="20dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/onetebg"
        android:textColor="@color/titleBlue"
        android:gravity="center"
        android:layout_alignParentRight="true"
        android:text="1"/>

</RelativeLayout>

onetebg背景样式

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 设置透明背景色 -->
    <solid android:color="@color/white" />

    <!-- 设置一个黑色边框 -->
    <stroke
        android:width="1px"
        android:color="@color/transparent" />
    <!-- 设置四个圆角的半径 -->
    <corners
        android:radius="14dp"/>
    <!-- 设置一下边距,让空间大一点 -->
    <padding
        android:bottom="0dp"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp" />

</shape>

导航类activity

public class ViewPagerActivity extends Activity {
    private ViewPager vp;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.guide_activity);
        initViews();
        initData();
    }
    public void initViews(){
        vp = (ViewPager) findViewById(R.id.vp_guide);
        textView =(TextView)findViewById(R.id.myposition);
    }
    public void initData(){
        List<View> guideList = new ArrayList<>();
        guideList.add(getGuideView(R.drawable.guide_1));
        guideList.add(getGuideView(R.drawable.guide_2));
        guideList.add(getGuideView(R.drawable.guide_3));
        RelativeLayout rl = new RelativeLayout(this);
//        rl.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
//        rl.setBackgroundColor(this.getResources().getColor(R.color.transparent));
//        guideList.add(rl);
        Log.i("lgq","sss==="+MyApplication.getnScreenWidth()+"..."+ViewGroup.LayoutParams.MATCH_PARENT);
        GuidePageAdapter vpAdapter = new GuidePageAdapter(guideList);
        vp.setAdapter(vpAdapter);
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }
            @Override
            public void onPageSelected(int position) {
                textView.setText(position+1+"/"+3);
            }
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
    }
    private View getGuideView(int nDrawableID) {
        ImageView iv = new ImageView(this);
        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        iv.setLayoutParams(lp);
        iv.setBackground(this.getResources().getDrawable(R.drawable.guide_1));
        iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        iv.setImageResource(nDrawableID);
        return iv;
    }
}

activity配置属性

<activity android:name=".ViewPagerActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateHidden|adjustPan"></activity>

猜你喜欢

转载自blog.csdn.net/meixi_android/article/details/81178740