亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中怎么使用ViewPager2實現頁面滑動切換效果

發布時間:2022-02-18 10:45:41 來源:億速云 閱讀:486 作者:iii 欄目:開發技術

這篇“Android中怎么使用ViewPager2實現頁面滑動切換效果”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Android中怎么使用ViewPager2實現頁面滑動切換效果”文章吧。

    1.引言

    在很多應用中,我們經常會看到多個頁面之間滑動切換的場景,ViewPager2是ViewPager的升級版。

    2.實現頁面滑動切換

    2.1 引入ViewPager2庫

    要使用ViewPager2,需要引入ViewPager2庫,引入方法如下:

    implementation "androidx.viewpager2:viewpager2:1.0.0"

    2.2 使用ViewPager2

    在布局中使用ViewPager2,示例如下:

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    2.3 構建Fragment

    本Fragment只為簡單演示使用,其布局如下:

    <LinearLayout 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"
        android:gravity="center"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/tv_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:textColor="@color/black"/>
    
    </LinearLayout>

    ContentFragment類的實現如下:

    public class ContentFragment extends Fragment {
        private String content;
    
        public ContentFragment(String content) {
            this.content = content;
        }
    
        private TextView tv_content;
    
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_content, container, false);
            tv_content = view.findViewById(R.id.tv_content);
            tv_content.setText(content);
            return view;
        }
    
        public void setContent(String content) {
            this.content = content;
            tv_content.setText(content);
        }
    }

    2.4 繼承FragmentStateAdapter

    創建自定義的類ContentPagerAdapter,讓它繼承FragmentStateAdapter,并實現createFragment(int position)和getItemCount()方法,示例如下:

    public class ContentPagerAdapter extends FragmentStateAdapter {
        private List<ContentFragment> datas;
    
        public ContentPagerAdapter(@NonNull FragmentActivity fragmentActivity,List<ContentFragment> datas) {
            super(fragmentActivity);
            this.datas = datas;
        }
    
        @NonNull
        @Override
        public Fragment createFragment(int position) {
            return datas.get(position);
        }
    
        @Override
        public int getItemCount() {
            return datas.size();
        }
    }

    2.5 將ViewPager2與適配器綁定

    將ViewPager2與適配器綁定后,便可實現頁面滑動切換,示例如下:

    datas = new ArrayList<>();
    datas.add(new ContentFragment("頁面1"));
    datas.add(new ContentFragment("頁面2"));
    datas.add(new ContentFragment("頁面3"));
    datas.add(new ContentFragment("頁面4"));
    datas.add(new ContentFragment("頁面5"));
    contentPagerAdapter = new ContentPagerAdapter(this, datas);
    viewPager2.setAdapter(contentPagerAdapter);

    2.6 垂直方向滑動切換

    ViewPager2不僅支持水平方向的滑動,還支持垂直方向的滑動,實現垂直滑動也是相當簡單,在布局文件中添加android:orientation="vertical"屬性即可,如下所示:

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"/>

    或者在代碼中調用ViewPager2的setOrientation(ViewPager2.ORIENTATION_VERTICAL)方法也可以讓ViewPager2實現垂直方向的滑動。

    2.7 Fragment更新

    當Fragment集合發生變化需要更新時,使用FragmentStateAdapter進行更新也很便捷,由于ViewPager2是基于RecyclerView實現的,所以更新數據的時候可以調用notifyItemChanged(int position)、notifyItemInserted(int position)等方法進行更新。

    以上就是關于“Android中怎么使用ViewPager2實現頁面滑動切換效果”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    汝城县| 噶尔县| 修武县| 信阳市| 民权县| 镇赉县| 芜湖县| 贵南县| 四川省| 曲沃县| 中宁县| 霍邱县| 沙湾县| 东山县| 岳普湖县| 名山县| 托克托县| 岐山县| 潼关县| 土默特左旗| 鄂伦春自治旗| 扎赉特旗| 邓州市| 安顺市| 乐都县| 牡丹江市| 汤阴县| 乐山市| 桑植县| 万州区| 西平县| 凉城县| 轮台县| 三穗县| 广东省| 迁安市| 九龙城区| 宜阳县| 景谷| 寿宁县| 南宁市|