Android 丝滑切换展示页的ViewPager最简单用法
网上帖子都狠复杂,我整个最简单的,能用就好,希望能帮到大家:
用到的类列表如下,用到的具体都贴出来了,根据需要直接拿走改把。
A_LogInActivity (需要添加控件的对应类)
activity_a__log_in (就布局,我这里就添加了一个ViewPager 下面贴出来了,直接拷走)
PagerAdapater (ViewPager用到的具体类,对应的东西在里面改也行,传出去也行)
item_launch(ViewPager用到的最简单布局)
首先是用到的xml
这个放到对应的activity的xml布局里面
<android.support.v4.view.ViewPager
android:id="@+id/vp_content"
android:layout_width="match_parent"
android:layout_height="300dp" />
----------------------我是分割线-------------------------------
然后 activity 具体代码,红色部分就是新的,你可以直接拷走用:
public class A_LogInActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
private List<String> mStringList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a__log_in);
mStringList = new ArrayList<>();
mStringList.add("1");
mStringList.add("2");// 这个随便弄 我改成要不要都行,一般都会动态创建就是了
// 构建一个商品图片的翻页适配器
PagerAdapater adapter = new PagerAdapater(this, mStringList);
// 从布局视图中获取名叫vp_content的翻页视图
ViewPager vp_content = (ViewPager) findViewById(R.id.vp_content);
vp_content.setAdapter(adapter); // 设置翻页视图的适配器
vp_content.setCurrentItem(0); // 设置翻页视图显示第一页 切换页面可以用这个方法
vp_content.addOnPageChangeListener(this); // 给翻页视图添加页面变更监听器
}
// 翻页状态改变时触发。state取值说明为:0表示静止,1表示正在滑动,2表示滑动完毕
// 在翻页过程中,状态值变化依次为:正在滑动→滑动完毕→静止
public void onPageScrollStateChanged(int state) {}
// 在翻页过程中触发。该方法的三个参数取值说明为 :第一个参数表示当前页面的序号
// 第二个参数表示页面偏移的百分比,取值为0到1;第三个参数表示页面的偏移距离
public void onPageScrolled(int position, float ratio, int offset) {}
// 在翻页结束后触发。position表示当前滑到了哪一个页面
public void onPageSelected(int position) {
Toast.makeText(this, "测试滑动:" + mGoodsList.get(position), Toast.LENGTH_SHORT).show();
}
}
----------------------我是分割线-------------------------------
然后是 PagerAdapater的内容,整个直接挪走改吧:
public class PagerAdapater extends PagerAdapter {
// 声明一个视图列表
private List<View> mViewList = new ArrayList<View>();
// 这个值没用了
private List<String> stringList = new ArrayList<String>();
// 图像翻页适配器的构造方法,可以根据传入的list来创建多少个页面 我这里没用到 只留下个写法
public PagerAdapater(Context context, List<String> stringList) {
stringList = stringList;
/**
* 第一个页面
* item_launch 这个是我新建的xml页面 里面就一个按钮,你完全可以自己随意新建随意改
*/
View LiView = LayoutInflater.from(context).inflate(R.layout.item_launch, null);
// 将对应的布局添加进去 add几次就会有几个页面!!!要几个页面就只管加
mViewList.add(LiView);
Button btn_start = LiView.findViewById(R.id.btn_start);
/**
* 第一个页面
*/
View LiView1 = LayoutInflater.from(context).inflate(R.layout.item_launch1, null);
mViewList.add(LiView1); // 将对应的布局添加进去
Button btn_start2 = LiView1.findViewById(R.id.btn_start);
}
// 获取页面项的个数
public int getCount() {
return mViewList.size();
}
// 判断当前视图是否来自指定对象
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
// 从容器中销毁指定位置的页面
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mViewList.get(position));
}
// 实例化指定位置的页面,并将其添加到容器中
public Object instantiateItem(ViewGroup container, int position) {
container.addView(mViewList.get(position));
return mViewList.get(position);
}
// 获得指定页面的标题文本
public CharSequence getPageTitle(int position) {
return mGoodsList.get(position);
}
}
----------------------我是分割线-------------------------------
对应的Adapater用到的xml
这个可以随便改,随便创建,自己把名字对应上就好
item_launch
item_launch1 两个XML我这里一样的内容 根据自己需要直接改吧
单纯就一个button,不加太多复杂的东西了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:layout_gravity="center_horizontal"
android:id="@+id/btn_start"
android:layout_width="300dp"
android:layout_height="45dp"
android:text="登录"
/>
</LinearLayout>
----------------------我是分割线-------------------------------
附上两张我修改好的页面截图,根据上面代码你应该能得到一个滑动切换的ViewPager
如果要像我一样点击切换就用
vp_content.setCurrentItem(0);
方法参数代表第几个页面。

