首页 > 解决方案 > android中的自动viewPager

问题描述

我正在使用 viewpager 库来实现图像滑块,但不知道如何实现它来自动滚动。这是我的代码。我的代码在 mainActivity 中出错,ViewPageAdapter 我已经解决了六个小时的问题。请帮我。

1.MainActivity

import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager.widget.ViewPager

class MainActivity : AppCompatActivity() {
    internal lateinit var  viewpager :ViewPager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        viewpager = findViewById(R.id, viewpager) as ViewPager
        val adapter = ViewPagerAdapter(this)
        viewpager.adapter = adapter
    }

}

2.ViewPagerAdapter

    import android.content.Context
    import android.view.LayoutInflater
    import android.view.View
    import android.view.ViewGroup
    import android.widget.ImageView
    import androidx.viewpager.widget.PagerAdapter
    import androidx.viewpager.widget.ViewPager
    
    class ViewPagerAdapter(private val context: Context):PagerAdapter() {
        private var layoutInflater:LayoutInflater?=null
        var Image = arrayOf(
            R.drawable.imgview_1, R.drawable.imgview_2, R.drawable.imgview_3
        )
        override fun isViewFromObject(view: View, `object`: Any): Boolean {
            return view===`object`
        }
    
        override fun getCount(): Int {
            return Image.size
    
        }
    
        override fun instantiateItem(container: ViewGroup, position: Int): Any {
            layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
            val v = layoutInflater!!.inflate(R.layout.viewpager_activity, null)
            val image = v.findViewById<View>(R.id, imageview) as ImageView
            image.setImageResource(Image[position])
            val vp = container as ViewPager
            vp.addView(v, 0)
            return v;
        }
    
        override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
            val vp = container as ViewPager
            val v = `object` as View
            vp.removeView(v)
        }
    }

3.ViewPagerActivity

<?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">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageview"/>
</LinearLayout>

4.activity_main

<androidx.viewpager.widget.ViewPager
        android:id="@+id/main_3"
        app:layout_constraintTop_toBottomOf="@id/main_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

标签: android-viewpager

解决方案


您可能会发现使用ViewFlipper类会更好,因为它可以设置为在视图之间自动切换并在加载时自动启动。


推荐阅读