基于Viewpager2实现登录注册引导页面
作者:_jiaaang 发布时间:2023-06-16 11:04:10
标签:Viewpager2,登录,注册
本文实例为大家分享了Viewpager2实现登录注册引导页面的具体代码,供大家参考,具体内容如下
介绍
屏幕滑动是两个完整屏幕之间的切换,在设置向导或幻灯片等界面中很常见
实现图(图片来源于网络):
例子
1、创建视图
我这里只创建了3个XML
fragment0.xml
<?xml version="1.0" encoding="utf-8"?>
? ? <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? android:id="@+id/content"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent" >
? ? <ImageView
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent"
? ? ? ? android:adjustViewBounds="true"
? ? ? ? android:scaleType="fitXY"
? ? ? ? android:src="@drawable/p0"
? ? ? ? />
? ? </LinearLayout>
fragment1.xml
<?xml version="1.0" encoding="utf-8"?>
? ? <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? android:id="@+id/content"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent" >
? ? <ImageView
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent"
? ? ? ? android:adjustViewBounds="true"
? ? ? ? android:scaleType="fitXY"
? ? ? ? android:src="@drawable/p1"
? ? ? ? />
? ? </LinearLayout>
fragment2.xml
<?xml version="1.0" encoding="utf-8"?>
? ? <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? android:id="@+id/content"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent" >
? ? <ImageView
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent"
? ? ? ? android:adjustViewBounds="true"
? ? ? ? android:scaleType="fitXY"
? ? ? ? android:src="@drawable/p2"
? ? ? ? />
? ? </LinearLayout>
2、创建 Fragment
根据构造方法传进来的 int i;返回不同的视图(i是等下用到的FragmentStateAdapter适配器中传进去的)
package com.example.xianyu;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public class mFragment extends Fragment {
? ? int i = 0;
? ? mFragment(int i){
? ? ? ? this.i = i;
? ? }
? ??
? ? @Nullable
? ? @Override
? ? public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
? ? ? ? View view = null;
? ? ? ? switch (i){
? ? ? ? ? ? case 0: {
? ? ? ? ? ? view = inflater.inflate(R.layout.fragment0, container, false);
? ? ? ? ? ? break;
? ? ? ?}
? ? ? ? ? ? case 1: {
? ? ? ? ? ? view = ?inflater.inflate(R.layout.frament1, container, false);
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? ? ? case 2: {
? ? ? ? ? ? ? ? view = inflater.inflate(R.layout.fragment2, container, false);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return view;
? ? }
}
3、主Activity,并创建自定义适配器继承自FragmentStateAdapter
activity_screen_slide.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- activity_screen_slide.xml -->
<androidx.viewpager2.widget.ViewPager2
? ? xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:id="@+id/pager"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent" />
homeActivity
package com.example.xianyu;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
public class homeActivity extends FragmentActivity {
? ? //要显示的页数
? ? private static final int NUM_PAGES = 3;
? ? private ViewPager2 viewPager2;
? ? ?// 适配器,为ViewPager2提供页面?
? ? private FragmentStateAdapter pagerAdapter;
? ??
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_screen_slide);
? ? ? ? viewPager2 = findViewById(R.id.pager);
? ? ? ? pagerAdapter = new ScreenSlidePagerAdapter(this);
? ? ? ? viewPager2.setAdapter(pagerAdapter);
? ? }
? ? @Override
? ? public void onBackPressed() {
? ? ? ? if (viewPager2.getCurrentItem() == 0) { ? ? ? ? ? ?
? ? ? ? ? ? super.onBackPressed();
? ? ? ? } else { ? ? ? ? ??
? ? ? ? ? ? viewPager2.setCurrentItem(viewPager2.getCurrentItem() - 1);
? ? ? ? }
? ? }
?//自定义的类,继承自FragmentStateAdapter适配器
? ? private class ScreenSlidePagerAdapter extends FragmentStateAdapter {
? ? ? ? public ScreenSlidePagerAdapter(FragmentActivity fa) {
? ? ? ? ? ? super(fa);
? ? ? ? }
//主要是createFragment这个方法
? ? ? ? @Override
? ? ? ? public Fragment createFragment(int position) {
? ? ? ? ? ? return new mFragment(position);
? ? ? ? }
? ? ? ? @Override
? ? ? ? public int getItemCount() {
? ? ? ? ? ? return NUM_PAGES;
? ? ? ? }
? ? }
}
来源:https://blog.csdn.net/weixin_44758662/article/details/108912726


猜你喜欢
- 目录1.引用Nuget包 ServiceStack.Redis2. string 类型的使用作
- C#开发,收到下位机串口数据(温度信息),可能是正数也可能是负数,如何转换?第一反应是想起书本上的理论,无符号数表示范围是多少到多少,有符号
- 前言关于倒计时可以说我们App开发中常见的一种场景了,比如Splash倒计时跳转首页,比如发送短信之后倒计时60秒显示等等。关于倒计时的实现
- 小编在之前给大家介绍过很多android项目打包的经验,本篇内容我们通过一个项目实例来给大家讲解android每一步打包和签名的过程。and
- java实现数字转大写的方法说明:将数字金额转大写,如下:public class Test { /** *
- 在项目中用到了MapStruct,对其可以转换JavaBean特别好奇,因为之前都是使用Vo的方式手动set转换,但是接触到MapStruc
- sftp简介sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的
- 学习背景进入正文学习字符串的intern()方法之前,先给下这4个问题,看下自己是否都知道答案?1、String s1 = “a” + “b
- 说明:当程序中出现频繁变化的数据时,如果采用认为的方式进行修改并且编译打包则会导致代码的耦合性较高,不便于维护!所以能否为属性动
- 引言使用SpringMVC作为Controller层进行Web开发时,经常会需要对Controller中的方法进行参数检查。本来Spring
- C# Linq获取两个List或数组的差集交集List<int> list1 = newList<int>();li
- package org.itat.stax;import java.io.IOException;import java.io.InputS
- 本文实例为大家分享了Java实现酒店客房管理系统的具体代码,供大家参考,具体内容如下LoginFrame.javapackage login
- 如下所示:package cn.jdk.foreach;import java.util.HashMap;import java.util.
- 效果展示如下所示:实时监控redis环境信息和日志列表Redis配置在windows下安装的redis,在安装目录找到redis.windo
- 1、什么是序列化与反序列化?序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传
- C#中,Image为源自 Bitmap 和 Metafile 的类提供功能的抽象基类,也就是说更通用,当我们用Image.FromFile(
- 前言:什么是多数据源?最常见的单一应用中最多涉及到一个数据库,即是一个数据源(Datasource)。那么顾名思义,多数据源就是在一个单一应
- RecyclerView的使用比ListView的使用是比较复杂的,ListView的使用是五个步骤,而我们的RecyclerView的使用
- 一内容:设计一个手写字体识别程序。二实现①建立一个存放手写字体的数据库②activity_main.xml<?xml version=