首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用androidx实现Viewpager中的点设计

AndroidX是Android支持库的演化版本,它提供了用于开发Android应用程序的一组库和工具。Viewpager是一种用户界面布局方式,它可以在屏幕上水平滑动并显示多个页面。

在使用AndroidX实现Viewpager中的点设计时,可以按照以下步骤进行操作:

  1. 添加依赖:在项目的build.gradle文件中添加以下依赖:
代码语言:txt
复制
implementation 'androidx.viewpager2:viewpager2:1.1.0-alpha01'
  1. 创建布局文件:在XML布局文件中添加Viewpager和点的布局。
代码语言:txt
复制
<androidx.viewpager2.widget.ViewPager2
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<LinearLayout
    android:id="@+id/dotsLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:gravity="center"
    android:orientation="horizontal" />
  1. 实现适配器:创建一个继承自RecyclerView.Adapter的适配器类,用于管理Viewpager的页面。
代码语言:txt
复制
public class MyPagerAdapter extends RecyclerView.Adapter<MyPagerAdapter.ViewHolder> {
    private List<PageData> pageDataList;

    public MyPagerAdapter(List<PageData> pageDataList) {
        this.pageDataList = pageDataList;
    }

    // 实现必要的方法
    // ...

    class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;

        ViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.textView);
        }
    }
}
  1. 设置适配器和点的指示器:在Activity或Fragment中,将适配器与Viewpager关联,并创建点的指示器。
代码语言:txt
复制
ViewPager2 viewPager = findViewById(R.id.viewPager);
LinearLayout dotsLayout = findViewById(R.id.dotsLayout);

MyPagerAdapter adapter = new MyPagerAdapter(pageDataList);
viewPager.setAdapter(adapter);

// 创建点的指示器
for (int i = 0; i < pageDataList.size(); i++) {
    ImageView dot = new ImageView(this);
    dot.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_dot));
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT
    );
    params.setMargins(8, 0, 8, 0);
    dotsLayout.addView(dot, params);
}
  1. 监听页面滑动事件:为Viewpager设置一个OnPageChangeCallback监听器,用于更新点的状态。
代码语言:txt
复制
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
    @Override
    public void onPageSelected(int position) {
        super.onPageSelected(position);
        // 更新点的状态
        for (int i = 0; i < dotsLayout.getChildCount(); i++) {
            ImageView dot = (ImageView) dotsLayout.getChildAt(i);
            dot.setImageDrawable(ContextCompat.getDrawable(MainActivity.this,
                    i == position ? R.drawable.ic_dot_selected : R.drawable.ic_dot));
        }
    }
});

通过以上步骤,你可以使用AndroidX实现Viewpager中的点设计。这种设计常用于引导页、图片轮播等场景。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动推送:为移动应用提供消息推送服务,可用于向App用户发送通知、消息等。详情请参考腾讯云移动推送
  • 腾讯云云服务器:提供弹性计算服务,可满足各种规模的应用需求。详情请参考腾讯云云服务器
  • 腾讯云数据库MySQL版:提供高性能、高可用的MySQL数据库服务。详情请参考腾讯云数据库MySQL版
  • 腾讯云对象存储COS:提供安全、稳定、低成本的云端存储服务。详情请参考腾讯云对象存储COS
  • 腾讯云区块链服务:提供一站式区块链开发、部署和运维解决方案。详情请参考腾讯云区块链服务
  • 腾讯云物联网套件:提供设备接入、数据收发、设备管理等功能,帮助用户快速开发物联网应用。详情请参考腾讯云物联网套件
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

APP启动引导页制作,ViewPager实现翻页动画

Android网络与数据存储 第一章学习 ---- 一个启动引导页制作#### 概要: 这次制作App引导页,主要用到2个知识“SharedPreferences 和 ViewPager” Genymotion...为了使用SharedPreferences,需要以下几步来实现 第一步:得到 SharedPreferences 对象,Android 主要提供了三种方法来得到此对象,如下代码所示 //1....Activity 类 getPreferences()方法 public SharedPreferences getPreferences(int mode) { return...类 getSharedPreferences()方法,此方法传入两个参数: 第一个参数用于指定 SharedPreferences 文件名称,如果 指 定 文 件 不 存 在 则 会 创...这样就从SharedPreferences所保存文件取得了数据,实现了简单数据永久化。 ---- 2.ViewPager##### 先画个图,直观理解下结构顺序 ?

1.9K10
  • 妖怪般VerifyError | 奇形怪状bug

    如果你是因为这个bug,不幸入这篇文章,我想说你运气属实不好,那么让我们掌声欢迎这个受害者。 首先我个人觉得这个问题非常难排查和定位,光从堆栈日志来说,你可能会一头雾水。...java.lang.VerifyError 是说 JVM 在加载一个类时,会去校验类正确性,只有类文件不合法才会报这个Error,这个异常发生在类加载过程。 这个问题发生在类生命周期过程。...) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631) at androidx.viewpager.widget.ViewPager.dataSetChanged...而在新版本androidx,则给Fragment添加了另外一个有参构造函数,所以这部分就出现了异常。...DexVerify verifyMethod() 最终会调用 CodeVerify dvmVerifyCodeFlow() 来确保类单个方法执行流是合法

    1K40

    ViewPager2打造轮播Banner

    [效果图] 上图是天津地铁APPBanner也是本文要实现效果 一、如何使用ViewPager2 ①在app下build.gradle文件添加如下依赖implementation "androidx.viewpager2...:viewpager2:1.0.0"<androidx.viewpager2.widget.ViewPager2 android:id="@+id/bannerVp" android:layout_width...,这里选择使用官方提供ShapeableImageView实现圆角需要写一个style ④我们都知道ViewPager2适配器和RecyclerView使用一样,这里就不贴代码了 ⑤最后我们给...这里采用了viewpostDelayed方法进行实现 mLooper是我定义Runnable,后面会讲原因 滑动实现了,但启停时机也很重要 所以这里选用onWindowFocusChanged因为它在窗体失去和获得焦点时候会通知我们...我们知道触摸调用setOnTouchListener即可,但是给ViewPager2使用时候你会发现不起作用。

    1.8K30

    服务设计关键和方法

    具体设计过程可以查看文章 《浩瀚星辰,征战远航 ——腾讯国际业务部年会创意策划和方案设计》。 本文将结合本案例来谈一谈服务设计3个关键和1种呈现和测试方法。 02 服务设计3个关键 ?...团队是服务设计第一关键。这里包含两个:「组建跨职能团队」和「邀请客户(需求方)参与」。 ? 通常我们团队要包含设计师、开发人员、支持人员、商务人员等。...用户体验地图一种讲故事方式,从一个特定用户视角出发,记录和分析从用户来到你产品(或服务)到完成目标离开全部过程。它包括:用户在这个场景触点、行为、痛、爽、以及感受和想法。...然后去罗列每一个行为触点上惊喜和问题,这里穷举法,把能想到全部罗列,直到再也想不出来。如下图示例: ? 最后把惊喜和问题加权,得出每一个行为触点上体验情绪值。...在智慧年会项目中,从入场前到入场签到,人脸识别到整个过程,到晚会过程整个体验到最终结束。我们就用这套方法来构建用户体验地图。 ? ? 视角是服务设计第三关键

    96930

    XYLibrary笔记六:XTab使用笔记

    工具类XTab 测试代码androidxfragment+tab+viewpager 项目中使用非androidx版本XMusic 二.效果图 三.代码 非androidx版本 import android.support.v4...void onPageSelected(int position); } } androidx版本代码,与非android仅仅是引用上差别 import androidx.appcompat.app.AppCompatActivity...viewPagerviewPager.setOffscreenPageLimit(offscreenPageLimit);是设置应保留在页面两侧页数,以花更少时间进行布局 经过打印可以,当我设置为...addOnPageChangeListener方法监听 onPageScrolled是实时滑动距离绘测 /** * This method will be invoked when the...* 滑动完成,自动完成调整状态 */ public static final int SCROLL_STATE_SETTLING = 2; 在XTab工具类我仅仅把onPageSelected

    45440

    Android ViewPager2 真的香么?

    版本 ViewPager2 目前处于预览版,还没有合并到主分支,可能还会有一些隐藏小问题,建议大家先尝试一下; implementation 'androidx.viewpager2:viewpager2...和尚当前 SDK 已是最新版本,首先按照提示在 AndroidManifest->application 添加错误要求,但是并不能解决问题,之后查阅了很多资料,发现 Androidx 与 Android...support 库 不共存,这可真是麻烦了,如果在实际项目中直接可麻烦大了; ?...解决 既然不兼容,只好先转到 Androidx 库下,chenzhenlindx大神博客很有帮助; 工程 -> Refactor -> Migrate to Androidx; 提示是否保存以前工程...尝试 和尚尝试绑定不同背景色和文字内容;与 ViewPager 不同是,适配器需要使用 RecyclerView.Adapte,这也意味着绑定数据方式更灵活,和尚为了测试 ViewPager2

    2.1K31

    读完《实现领域驱动设计思考

    本文是一篇技术文,结合《实现领域驱动设计》和以往系统开发经验, 重点解释了业务分析过程领域,子域,命令模型和查询模型几个概念。 适合有一定经验软件开发者和产品经理阅读。...关注对应于软件开发 关注分离 之前一篇随笔,请移步 从业务功能复用演化为业务模式复用 二 领域和子域 领域是一个组织需要做事,包括业务范畴和做事方式。...我认为领域模型才是 DDD 在微服务设计关键,只有构建了边界清晰领域模型边界,才有可能设计出高质量微服务。领域和子域实际业务,是比较难划分。 在微服务设计时不能脱离领域模型来谈微服务。...下图是一张请求体,看实际模型命名例子,这样定义模型方式,就是向 DDD 设计思路靠拢。...总结 在技术团队 DDD 思想落地困难重重,设计不一定追求完全一致,更多是逐步演化靠近。 大到一个系统拆分,小到业务模型定义实现。 反复琢磨,是提高业务系统设计能力有效方法。

    27710

    Fragment 可见性监听方案 - 完美兼容多种 case

    (boolean isVisibleToUser) 有一需要注意是,个方法可能先于Fragment生命周期被调用(在FragmentPagerAdapter,在Fragment被add之前这个方法就被调用了...适配(也是一个坑) 在 AndroidX 当中,FragmentAdapter 和 FragmentStatePagerAdapter 构造方法,添加一个 behavior 参数实现。...更多详情,可以参考这一篇博客Android Fragment + ViewPager懒加载实现 宿主 Fragment 再嵌套 Fragment 这种 case 也是比较常见,比如 ViewPager...Fragment 里面 ViewPagerViewPager 里面有多个 Fragment ,通过 setOnVisibilityChangedListener 兼容,前提是一级 Fragment...借鉴了 Rxjava 设计思想,下游持有上游引用,从而控制 Obverable 回调线程。

    2.6K10

    JetPack最新库简单介绍

    JetPack Material Design 组件简单介绍 这是本人写,里面有一两个还是可以用到现有项目中,不过大多没啥,主要是有更成熟方案 10.androidx.navigation...因为这种场景下,进程死掉后 launcher 能够启动任何你应用 Activity 页面。 这一本人感觉无所谓。...更何况大家都熟悉了多activity方式 第二就是不用Fragments 回退栈。这个很好理解,回退栈不好管理,而且生命周期会很莫名其妙。...14.androidx.datastore DataStore 有两种实现方式:Preferences 和 Proto,从中选择其一即可 。...使用上跟SharedPreference很类似,也很简单,Android官方推荐使用 15.androidx.viewpager2 我自己写了一篇 深入了解ViewPager2

    86130
    领券