当前位置: 首页 > article >正文

kotlin实现viewpager

说明:kotlin + tablayout + viewpager + adapter实现滑动界面

效果图
在这里插入图片描述

step1:

package com.example.flushfragmentdemo



import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val fragments = ArrayList<Fragment>()
        fragments.add(FooFragment())
        fragments.add(PlayerFragment(""))



        mainViewPager.apply {
            adapter = object :FragmentStateAdapter(this@MainActivity){
                override fun getItemCount(): Int {
                    return 2
                }

                override fun createFragment(position: Int): Fragment {
                    return fragments[position]
                }
            }
            setCurrentItem(1,false)
        }

        TabLayoutMediator(tabLayout,mainViewPager){ tab: TabLayout.Tab, i: Int ->
            when (i) {
                0 -> tab.text = "fpp"
                1 -> tab.text = "player"
            }
        }.attach()
    }
}

step2:

package com.example.flushfragmentdemo


import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

private const val ARG_PARAM1 = "param1"
private const val ARG_PARAM2 = "param2"


class FooFragment : Fragment() {
    private var param1: String? = null
    private var param2: String? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        arguments?.let {
            param1 = it.getString(ARG_PARAM1)
            param2 = it.getString(ARG_PARAM2)
        }
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_foo, container, false)
    }

    companion object {
        @JvmStatic
        fun newInstance(param1: String, param2: String) =
            FooFragment().apply {
                arguments = Bundle().apply {
                    putString(ARG_PARAM1, param1)
                    putString(ARG_PARAM2, param2)
                }
            }
    }
}

step3:

package com.example.flushfragmentdemo


import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
 
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.fragment_player.*

class PlayerFragment(private val url:String) : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_player, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)



    }

    override fun onResume() {
        super.onResume()

    }

    override fun onPause() {
        super.onPause()
    }
}

step4:

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <com.google.android.material.appbar.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <com.google.android.material.tabs.TabLayout
                android:id="@+id/tabLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabIndicatorColor="@android:color/white" />
        </com.google.android.material.appbar.AppBarLayout>

        <androidx.viewpager2.widget.ViewPager2
            android:id="@+id/mainViewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_anchorGravity="bottom" />
    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

step5:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:background="@android:color/holo_green_dark"
    tools:context=".FooFragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:background="@android:color/holo_red_dark"
        android:text="fpp"
        android:textSize="30sp" />

</FrameLayout>

step6:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:background="@android:color/holo_orange_dark"
    tools:context=".FooFragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="player"
        android:textSize="30sp" />

</FrameLayout>

end


http://www.kler.cn/news/361148.html

相关文章:

  • Jmeter 实战 JDBC配置
  • HTTP Content-Type的常见类型解析
  • 力扣每日打卡挑战 3184. 构成整天的下标对数目 I
  • QTextEdit 实现特定文本以不同颜色添加显示(C++/QT)
  • 初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)
  • idea 发布jar包
  • c++日常积累
  • WebGl 使用平行矩阵实现图像平移
  • 跨站脚本攻击XSS以及Cookie如何实现用户管理
  • 了解CSS Paint API
  • jmeter学习(6)逻辑控制器-循环
  • Leetcode—1242. 多线程网页爬虫【中等】Plus(多线程)
  • BurpSuite渗透工具的简单使用
  • SpringBoot 单元测试 - 登录认证在 Spring Boot 上的标准单元测试写法。
  • DruidDataSource 封clickhouse实现数据操作
  • 序列化问题记录:Jackson 与 Fastjson 的注解
  • 【YOLO学习】YOLOv5详解
  • Turn-it:优化线材重构雕塑制造
  • Java全栈经典面试题剖析6】JavaSE高级 -- 文件、IO流、序列化
  • 【计算机网络】详解数据链路层数据帧Mac地址ARP协议