欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android?ViewPager2?+?Fragment?聯(lián)動效果的實現(xiàn)思路

 更新時間:2022年12月01日 08:52:40   作者:AskaJohnny  
這篇文章主要介紹了Android?ViewPager2?+?Fragment?聯(lián)動,本篇主要介紹一下 ViewPager2 + Fragment聯(lián)動效果的實現(xiàn)思路,需要的朋友可以參考下

Android ViewPager2 + Fragment 聯(lián)動

本篇主要介紹一下 ViewPager2 + Fragment , 上篇中簡單使用了ViewPager2 實現(xiàn)了一個圖片的滑動效果, 那圖片視圖可以滑動, ViewPager2也可以滑動 Fragment

概述

ViewPager2 官方對它的描述就是 以可滑動的格式顯示視圖或 Fragment 也就說明提供了滑動Fragment的實現(xiàn) 并且還很簡單, 下面來看看吧

實現(xiàn)思路

1.Activity 布局文件中引入 ViewPager2 控件

2.編寫 Fragment 用于填充到ViewPager2中

3.編寫Adapter 實現(xiàn) FragmentStateAdapter

下面用實際代碼 來展示 滑動Fragment

代碼實現(xiàn)

Activity 布局文件中引入 ViewPager2 控件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".ViewPage2FragmentActivity">

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewpager2fragment"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:background="@color/pink"
        />
</androidx.constraintlayout.widget.ConstraintLayout>

編寫 Fragment 用于填充到ViewPager2中

package com.johnny.slzzing;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

/**
 * A simple {@link Fragment} subclass.
 * Use the {@link ViewPage2Fragment#newInstance} factory method to
 * create an instance of this fragment.
 */
public class ViewPage2Fragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public ViewPage2Fragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment ViewPage2Fragment.
     */
    // TODO: Rename and change types and number of parameters
    public static ViewPage2Fragment newInstance(String param1, String param2) {
        ViewPage2Fragment fragment = new ViewPage2Fragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_view_page2, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        TextView textView = view.findViewById(R.id.fragmenttextview);
        textView.setText(mParam1);
    }
}

fragment_view_page2

<?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=".ViewPage2Fragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:id="@+id/fragmenttextview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment"
        android:gravity="center"
        android:textSize="25sp"
        android:textColor="@color/black"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

fragment 很簡單 就在中間有個TextView 區(qū)分不同的fragment

編寫Adapter 實現(xiàn) FragmentStateAdapter

package com.johnny.slzzing;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import java.util.Arrays;
import java.util.List;

public class ViewPage2FragmentActivity extends AppCompatActivity {

    ViewPager2 viewPage2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_page2_fragment);

        viewPage2 = findViewById(R.id.viewpager2fragment);
        ViewPager2FragmentAdapter viewPager2FragmentAdapter = new ViewPager2FragmentAdapter(this , initFragmentList());
        //重點 ! 把 viewPage2設置adapter 這個adapter 不是去直接繼承RecycleView.Adapter了
        viewPage2.setAdapter(viewPager2FragmentAdapter);
    }
    //初始化3個fragment
    private List<Fragment> initFragmentList() {
        ViewPage2Fragment viewPage2Fragment = ViewPage2Fragment.newInstance("我是Fragment1", "");
        ViewPage2Fragment viewPage2Fragment2 = ViewPage2Fragment.newInstance("我是Fragment2", "");
        ViewPage2Fragment viewPage2Fragment3 = ViewPage2Fragment.newInstance("我是Fragment3", "");
        return Arrays.asList(viewPage2Fragment,viewPage2Fragment2,viewPage2Fragment3);
    }

    // 提供了FragmentStateAdapter 只需要繼承它即可 不用繼承RecycleView.Adapter
    static class ViewPager2FragmentAdapter extends FragmentStateAdapter{

        private final List<Fragment> fragmentList;

        public ViewPager2FragmentAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> fragmentList) {
            super(fragmentActivity);
            this.fragmentList = fragmentList;
        }

        @NonNull
        @Override
        public Fragment createFragment(int position) {
            return fragmentList.get(position);
        }

        @Override
        public int getItemCount() {
            return fragmentList.size();
        }
    }
}

效果

粉色區(qū)域是可以滑動切換 不同的Fragment 的

總結(jié)

本篇主要介紹了 ViewPager2 結(jié)合 Fragment 的基本使用方式 , 讓我們可以快速的實現(xiàn)滑動Fragment 的功能. 后續(xù)還可以結(jié)合 BottomNavigationView 聯(lián)動 底部導航欄+滑動, 有機會再說把

到此這篇關于Android ViewPager2 + Fragment 聯(lián)動的文章就介紹到這了,更多相關Android ViewPager2 Fragment 聯(lián)動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • android桌面懸浮窗顯示錄屏時間控制效果

    android桌面懸浮窗顯示錄屏時間控制效果

    這篇文章主要為大家詳細介紹了android桌面懸浮窗,顯示錄屏時間控制效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Flutter以兩種方式實現(xiàn)App主題切換的代碼

    Flutter以兩種方式實現(xiàn)App主題切換的代碼

    這篇文章主要介紹了Flutter以兩種方式實現(xiàn)App主題切換的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Android從源碼的角度徹底理解事件分發(fā)機制的解析(上)

    Android從源碼的角度徹底理解事件分發(fā)機制的解析(上)

    這篇文章主要介紹了Android從源碼的角度徹底理解事件分發(fā)機制的解析,具有很好的參考價值,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android使用CrashHandler來獲取應用的crash信息的方法

    Android使用CrashHandler來獲取應用的crash信息的方法

    本篇文章主要介紹了Android使用CrashHandler來獲取應用的crash信息的方法,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • Android畫中畫窗口開啟方法

    Android畫中畫窗口開啟方法

    Android8.0 Oreo(API Level26)允許活動啟動畫中畫Picture-in-picture(PIP)模式。PIP是一種特殊類型的多窗口模式,主要用于視頻播放。PIP模式已經(jīng)可用于Android TV,而Android8.0則讓該功能可進一步用于其他Android設備
    2023-01-01
  • Android跟隨手指移動的控件demo實例

    Android跟隨手指移動的控件demo實例

    大家好,本篇文章主要講的是Android跟隨手指移動的控件demo實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android線程間通信 Handler使用詳解

    Android線程間通信 Handler使用詳解

    這篇文章主要為大家介紹了Android線程間通信Handler使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Android手機保持屏幕高亮方法

    Android手機保持屏幕高亮方法

    這篇文章主要介紹了Android手機保持屏幕高亮方法,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06
  • Android APP編寫簡單答題器

    Android APP編寫簡單答題器

    這篇文章主要為大家詳細介紹了Android APP編寫簡單答題器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • android studio實現(xiàn)計算器

    android studio實現(xiàn)計算器

    這篇文章主要為大家詳細介紹了android studio實現(xiàn)計算器的具體方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評論