安卓实训之——页面滑动ViewPager

制作滑动页面

第一步:

新建四个布局文件:page1.xml;page2.xml;page3.xml;并在每个xml中添加<ImageView>

pager1.xml:

<span style="font-size:18px;"><?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" >

    <!-- 添加ImageView控件用于显示图片 -->
    <ImageView
        android:id="@+id/page01"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/a"
        android:scaleType="fitXY"
        />
</RelativeLayout></span>

page2.xml;page3.xml;同上.


第二步:在activity_main.xml中添加:

<android.support.v4.view.ViewPager

        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>


第三步:在Mainactivity中编辑:


import android.content.Context;
import android.graphics.Color;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

/*
ViewPage实现页面滑动,步骤:
1,声明控件:ViewPager
             View(数组)
2,在onCreate中查找控件;
3,声明实例化View数组
            指定数组长度,
4,将布局文件映射到数组。
    数组文件=布局文件
    View.inflate(参数1,参数2,参数3);
5,声明并新建PagerAdapter
6,为ViewPager设置adapter
*/
public class MainActivity extends AppCompatActivity{

    //1,声明控件:
    private ViewPager vp;
    private View[] childviews;
    private View[] childDots;

    //声明适配器
    private PagerAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Button btn=(Button)this.findViewById(R.id.btn01);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        //设置程序运行时首次加载的页面
        setContentView(R.layout.activity_main);
        //2,查找空件
        vp=(ViewPager)findViewById(R.id.viewpager);
        //3,实例化数组
        childviews=new View[3];
        childDots=new View[3];

        childDots[0]=(View)findViewById(R.id.dot1);
        childDots[1]=(View)findViewById(R.id.dot2);
        childDots[2]=(View)findViewById(R.id.dot3);

        //4,将4个布局文件映射到数组文件中
        childviews[0]=View.inflate(
                this,//上下文对象
                R.layout.page1,//布局文件
                null//根结点,用null即可
        );
        childviews[1]=View.inflate(
                this,
                R.layout.page2,
                null
        );
        childviews[2]=View.inflate(
                this,
                R.layout.page3,
                null
        );

        //新建一个PagerAdapter,但是不可以直接new
        adapter=new InnerAdapter();

        //6,为View设置adapter
        vp.setAdapter(adapter);

        //7,改变四个按钮的颜色

        //设置第一个按钮背景颜色
        childDots[0].setBackgroundColor(Color.WHITE);
            vp.setOnPageChangeListener(
                    new ViewPager.OnPageChangeListener() {
                        @Override
                        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                        }
                        //滑动
                        @Override
                        public void onPageSelected(int arg0) {
                        for (int i=0;i<childDots.length;i++){
                            //设置底部按钮的颜色
                            childDots[i].setBackgroundColor(Color.BLACK);
                        }
                            childDots[arg0].setBackgroundColor(Color.WHITE);
                        }

                        @Override
                        public void onPageScrollStateChanged(int state) {

                        }
                    }
            );
    }

    //真正的去实现滑动效果
    class InnerAdapter extends PagerAdapter{
        //Context context;

        //返回滑动页面的数量
        @Override
        public int getCount() {
            return childviews.length;
        }

        @Override
        public boolean isViewFromObject(View age0, Object age1) {
            return age0==age1;
        }

       /* 方法作用:
       * 方法进行图片的初始化工作
       * */
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
           // return super.instantiateItem(container, position);
            container.addView(childviews[position]);
            return  childviews[position];
        }
        //当滑动图片超过三张时,会调用此方法
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(childviews[position]);
        }
    }
}


效果图:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值