Android使用ViewPager实现翻页效果

本文实例为大家分享了Android使用ViewPager实现翻页效果的具体代码,供大家参考,具体内容如下

效果如图所示:

代码实现:

1.布局代码:activity_view_pager.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ViewPagerActivity">
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

1.1.viewpager1.xml

<?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:background="#CF1717"
    android:gravity="center">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第一个layout"
        android:textSize="20sp" />
</LinearLayout>

另外两个xml同理

2.MainActivity代码如下:

public class ViewPagerActivity extends AppCompatActivity {
    private ViewPager view_pager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_pager);
        view_pager = findViewById(R.id.view_pager);
        View inflate1 = LayoutInflater.from(this).inflate(R.layout.viewpager1, null);
        View inflate2 = LayoutInflater.from(this).inflate(R.layout.viewpager2, null);
        View inflate3 = LayoutInflater.from(this).inflate(R.layout.viewpager3, null);
        List<View> viewList = new ArrayList<>();
        viewList.add(inflate1);
        viewList.add(inflate2);
        viewList.add(inflate3);

        MyAdapter myAdapter = new MyAdapter(viewList);
        view_pager.setAdapter(myAdapter);

    }
}

2.1.适配器MyAdapter代码如下:

public class MyAdapter extends PagerAdapter {
    private List<View> viewList;

    public MyAdapter(List<View> viewList) {
        this.viewList = viewList;
    }

    //获取多少View
    @Override
    public int getCount() {
        return viewList.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(viewList.get(position), 0);
        return viewList.get(position);
    }

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

分析:

PagerAdapter主要是viewpager的适配器,可以实现控件的滑动效果。
继承PagerAdapter至少重写四个方法。

1.getCount():获得viewpager中有多少个view

2.instantiateItem():参数1:将给定位置的view添加到viewpager(容器中)创建并显示出来 。
返回值:返回一个代表新增页面的object(key),通常都是直接返回view本身就可以了,当然你也可以自定义自己的key,但是key和每个view要是一一对应的关系。

3.isViewFromObject():判断instantiateItem(ViewGroup,int)函数所返回来的key与一个页面视图是否是代表的同一个视图(即它俩是否是对应的,对应的表示同一个view)通常我们直接写 return view==object;

4.destroyItem():移除一个给定位置的页面,适配器有责任从容器中删除这个视图,这是为了确保在finishUpdate(viewGroup)返回时视图能够被移除。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2022-05-07

Android自定义ViewPager实现纵向滑动翻页效果

抖音几乎已经成为了我们日常生活中使用比较频繁的App,无聊之时或工作之后可以刷一刷短视频来供我们娱乐与放松.看到抖音的视屏切换效果,觉得用ViewPager可以做出一样的效果.想一想之前用的ViewPager都是横向切换的,虽然很经常用,但是从来没实现过竖向的切换效果,说做就做吧. 我们先看一波效果图: 那么,要想实现这样的效果,当然是自定义ViewPager啦.问了一下度娘,看到有这样一种思路: 首先,把Touch事件的x,y坐标做一下交换,从原先的x坐标差值转变成y坐标的差值,正符合了我们手

android ViewPager实现滑动翻页效果实例代码

实现ViewPager的滑动翻页效果可以使用ViewPager的setPageTransformer方法,如下: import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.View; public class ReadViewPager extends ViewPager { public ReadV

Android CardView+ViewPager实现ViewPager翻页动画的方法

Viewpager通俗一点讲就是一个允许左右翻转带数据的页面的布局管理器,经常用来连接Fragment,它很方便管理每个页面的生命周期,使用ViewPager管理Fragment是标准的适配器实现.最常用的实现一般有FragmentPagerAdapter和FragmentStatePagerAdapter.自行百度它的用法.今天我们要实现的是下面的效果: NO PICTURE TALK A JB 要实现图中的效果需要以下几个知识点: 1.clipChildren属性 2.一个页面显示多个Vie

Android ViewPager实现左右滑动翻页效果

本文实例为大家分享了ViewPager实现左右滑动翻页效果展示的具体代码,供大家参考,具体内容如下 代码如下: package com.example.demo; import java.util.ArrayList; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import a

Android用viewPager2实现UI界面翻页滚动的效果

1.先在build.gradle(Module)下添加引用viewPager2的库 implementation 'androidx.viewpager2:viewpager2:1.0.0' 2.在MainActivity下新建一个viewPager2 ViewPager2 viewPager = findViewById(R.id.viewPager); ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(); viewPager.

Android分页中显示出下面翻页的导航栏的布局实例代码

当页面条目过多的时候需要分页,要在布局中显示出分页的相关布局,使用android:layout_weight="11" activity_call_safe.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:lay

Android 中使用RecyclerView实现底部翻页

RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好.接下来通过一系列的文章讲解如何使用RecyclerView,彻底抛弃ListView. 最近在做pad端的app,需要一个像网页一样效果,之前使用addView方式,页码少的时候还可以,能实现效果,但是碰到了一个1000多页的界面,就GG了,页码半天显示不出来,于是使用RecyclerView作为容器,主要是看中RecyclerView的复用,不说了,看代

Android自定义左右或上下滑动翻页效果

本文实例为大家分享了Android自定义左右或上下滑动翻页展示的具体代码,供大家参考,具体内容如下 该自定义的效果和ViewPage+Fragment差不多 上下滑动翻页,继承ScrollView public class SlideScrollView extends ScrollView implements PageSlide{ private TotalSlide totalSlide; public SlideScrollView(AppCompatActivity context)

RecyclerView+PagerSnapHelper实现抖音首页翻页的Viewpager效果

RecyclerView + PagerSnapHelper 实现抖音首页翻页的Viewpager效果,供大家参考,具体内容如下 先来个效果 实现方式 PagerSnapHelperActivity.java public class PagerSnapHelperActivity extends Activity { /** * UI */ // recycleView private RecyclerView mRecyclerView = null; // adapter private

封装的jquery翻页滚动(示例代码)

HTML结构: 复制代码 代码如下: ul._rollSe{width:100px;height:300px;over-flow:hidden}  ul._rollSe li._rollPar{height:100px;border:1px solid #369} 复制代码 代码如下: <div class="_rollParent">  <ul class="_rollPageSe">  <li class="_rollpa

vue 翻页组件vue-flip-page效果

方法 change (改变页面) tap  (点击) turning  (正在翻页) prev  (前一页) next   (后一页) 翻到指定页面: handleSwitchManual(index) { if (index === this.currentIndex) return; this.$refs["turn"].toPage(index); this.currentIndex = index; this.goods_id = this.manuals[this.curre

Android通过手势实现答题器翻页效果

本文实例为大家分享了Android答题器翻页功能,主要使用ViewFilpper和GestureDetector来实现,供大家参考,具体内容如下 1.效果图 2.实现思路 把Activity的TouchEvent事件交个GestureDetector来处理,然后使用ViewFilpper使用动画控制多个组件的之间的切换效果.手势的一个Api就不详细说了,大家如果不了解可以查一下. 3.实现的步骤 1).构建手势检测器 2).准备数据 3).为ViewFilpper添加子控件. 4).初始化Ani

Android模仿知乎的回答详情页的动画效果

废话不多说,咱们第一篇文章就是模仿"知乎"的回答详情页的动画效果,先上个原版的效果图,咱们就是要做出这个效果 在实现之前,我们先根据上面的动画效果,研究下需求,因为gif帧数有限,所以不是很连贯,推荐你直接下载一个知乎,找到这个界面自己玩玩 ☞当文章往上移动到一定位置之后,最上面的标题栏Bar和问题布局Title是会隐藏的,回答者Author布局不会隐藏 ☞当文章往下移动移动到一定位置之后,原先隐藏的标题栏Bar和问题布局Title会下降显示 ☞当文章往上移动的时候,下部隐藏的Tool

iOS图片界面翻页切换效果

先看效果: 下面贴代码: #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *backgroundView; @property (strong,nonatomic) NSArray *array; @end @implementation ViewController -(NSArray *)array { if (_arra