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()
|
}
|
}
|