Fragment结合ViewPage实现滑动效果

本文介绍如何在Android Studio中结合Fragment和ViewPager实现界面滑动效果。通过创建多个Fragment布局和对应的Denglu主界面,利用代码进行详细操作演示。
摘要由CSDN通过智能技术生成

这边需要一个Denglu主界面,Denglu类还有四个Fragment类和它们的布局界面:

在这里插入图片描述
首先是Denglu.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".Denglu">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </androidx.viewpager.widget.ViewPager>

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.9"
        />

    <RadioGroup
        android:id="@+id/radiogroup"
        android:layout_width="474dp"
        android:layout_height="56dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:orientation="horizontal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline">

        <RadioButton
            android:id="@+id/radioButton1"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:padding="5dp"
            android:text="视频"
            android:textSize="25dp" />
        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:padding="5dp"
            android:text="音乐"
            android:textSize="25dp" />

        <RadioButton
            android:id="@+id/radioButton3"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:padding="5dp"
            android:text="爱豆"
            android:textSize="25dp" />

        <RadioButton
            android:id="@+id/radioButton4"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:padding="5dp"
            android:text="个人"
            android:textSize="25dp" />
    </RadioGroup>
</androidx.constraintlayout.widget.ConstraintLayout>

我们还需要新建一个fragment_layout15界面
在这里插入图片描述
代码如下:

<?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="#f1f1f1"
    android:orientation="vertical">
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />
    <RadioGroup
        android:id="@+id/tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checkedButton="@+id/tab1"
        android:gravity="center"
        android:orientation="horizontal"
        >
        <RadioButton
            android:id="@+id/tab1"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:background="@drawable/tab_selector"
            android:button="@null"
            />
        <RadioButton
            android:id="@+id/tab2"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:background="@drawable/tab_selector"
            android:button="@null"
            />
        <RadioButton
            android:id="@+id/tab3"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:background="@drawable/tab_selector"
            android:button="@null"
            />
        <RadioButton
            android:id="@+id/tab4"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:background="@drawable/tab_selector"
            android:button="@null"
            />
        <RadioButton
            android:id="@+id/tab5"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:background="@drawable/tab_selector"
            android:button="@null"
            />
        <RadioButton
            android:id="@+id/tab6"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:background="@drawable/tab_selector"
            android:button="@null"
            />
        <RadioButton
            android:id="@+id/tab7"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_margin="10dp"
            android:background="@drawable/tab_selector"
            android:button="@null"
            />

    </RadioGroup>

</LinearLayout>

四个Fragment布局代码我就不一一给出了,然后是Denglu实现类的代码
代码如下:

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager.widget.PagerTabStrip;
import androidx.viewpager.widget.ViewPager;

import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.RadioGroup;

import java.util.ArrayList;
import java.util.List;;

public class Denglu extends AppCompatActivity implements ViewPager.OnPageChangeListener, RadioGroup.OnCheckedChangeListener{

    private ArrayList<Fragment> mFragments;
    private ViewPager mViewpager;
    private MyFragmentPageAdapter adapter;
    private RadioGroup mRadiogroup;
    private List<Integer> mTabs;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_denglu);
        initView();
        initAdapter();
    }
    private void initView(){
        mViewpager=(ViewPager)findViewById(R.id.viewpager);
        mViewpager.addOnPageChangeListener(this);
        mRadiogroup=(RadioGroup)findViewById(R.id.radiogroup);
        mRadiogroup.setOnCheckedChangeListener(this);
        mFragments=new ArrayList<>();
        mFragments.add(new Fragment1());
        mFragments.add(new Fragment2());
        mFragments.add(new Fragment3());
        mFragments.add(new Fragment4());
        mTabs=new ArrayList<>();
        mTabs.add(R.id.radioButton1);
        mTabs.add(R.id.radioButton2);
        mTabs.add(R.id.radioButton3);
        mTabs.add(R.id.radioButton4);
        mRadiogroup.check(R.id.radioButton1);
    }
    private void initAdapter(){
        adapter=new MyFragmentPageAdapter(getSupportFragmentManager(),this,mFragments);//,mTitleList
        mViewpager.setAdapter(adapter);
    }
    @Override
    public void onPageScrolled(int i, float v, int i1) {
    }
    @Override
    public void onPageSelected(int i) {
        mRadiogroup.check(mTabs.get(i));
    }
    @Override
    public void onPageScrollStateChanged(int i) {
    }
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        mViewpager.setCurrentItem(mTabs.indexOf(checkedId));
    }
    protected void Onresume(){
        super.onResume();
    }
}```


还有四个Fagment实现类的代码,这里我就给出一个,剩下的和第一个一样:

```java
public class Fragment1 extends Fragment {
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
                              View view=inflater.inflate(R.layout.fragment_1,null);
							  return view;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

℃、Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值