tj
2025-03-28 dde2eeddbaf07246da7c2c352e7d49ec63fddcd2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package com.example.firstapp.ui.invitation
 
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.util.DisplayMetrics
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.LinearSmoothScroller
import androidx.recyclerview.widget.RecyclerView
import com.example.firstapp.R
import com.example.firstapp.adapter.InvitationAdapter
import com.example.firstapp.entity.InvitationRecord
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.concurrent.Executors
 
class InvitationActivity : AppCompatActivity() {
 
    private lateinit var recyclerView: RecyclerView
    private lateinit var adapter: InvitationAdapter
    private var currentPosition = 0
    private val handler = Handler(Looper.getMainLooper())
    private lateinit var scrollRunnable: Runnable
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_invitation_main)
 
        setupRecyclerView()
        loadData()
        setupAutoScroll()
    }
 
    private fun setupRecyclerView() {
        recyclerView = findViewById(R.id.invitationsuccessRecyclerView)
        recyclerView.layoutManager = LinearLayoutManager(this).apply {
            stackFromEnd = false // 从顶部开始布局
        }
        adapter = InvitationAdapter()
        recyclerView.adapter = adapter
    }
 
    private fun loadData() {
        val mockData = listOf(
            InvitationRecord("H****e", "获得了3天会员"),
            InvitationRecord("U****r", "获得了7天会员"),
            InvitationRecord("A****e", "获得了免广告特权"),
            InvitationRecord("B****d", "获得了3天会员"),
            InvitationRecord("C****o", "获得了7天会员")
        )
        adapter.submitList(mockData)
    }
 
    private fun setupAutoScroll() {
        scrollRunnable = object : Runnable {
            override fun run() {
                if (currentPosition < adapter.itemCount - 1) {
                    currentPosition++
                    smoothScrollToPosition(currentPosition)
                } else {
                    // 滚动到底部后回到顶部
                    currentPosition = 0
                    recyclerView.scrollToPosition(0)
                }
                handler.postDelayed(this, 2000)
            }
        }
        startAutoScroll()
    }
 
    private fun smoothScrollToPosition(position: Int) {
        val layoutManager = recyclerView.layoutManager as LinearLayoutManager
        val smoothScroller = object : LinearSmoothScroller(this) {
            override fun getVerticalSnapPreference(): Int = SNAP_TO_START
 
            override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float {
                return 100f / displayMetrics.densityDpi // 控制滚动速度
            }
        }
        smoothScroller.targetPosition = position
        layoutManager.startSmoothScroll(smoothScroller)
    }
 
    private fun startAutoScroll() {
        handler.postDelayed(scrollRunnable, 2000)
    }
 
    private fun stopAutoScroll() {
        handler.removeCallbacks(scrollRunnable)
    }
 
    override fun onPause() {
        super.onPause()
        stopAutoScroll()
    }
 
    override fun onResume() {
        super.onResume()
        startAutoScroll()
    }
}