这篇文章主要为大家详细介绍了基于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="QGRyYXdhYmxlL3Aw"
/>
</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="QGRyYXdhYmxlL3Ax"
/>
</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="QGRyYXdhYmxlL3Ay"
/>
</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;
}
}
}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:基于Viewpager2实现登录注册引导页面
猜你喜欢
- iOS 对当前webView进行截屏的方法 2023-03-01
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- Android studio实现动态背景页面 2023-05-23
- Android实现监听音量的变化 2023-03-30
- Flutter实现底部和顶部导航栏 2022-08-31
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Android实现轮询的三种方式 2023-02-17
- 详解flutter engine 那些没被释放的东西 2022-12-04
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
