lmw
2023-06-13 adf8013576cbdd12e5ebea8ff7e32baf5d558b27
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package com.kuanzhai.user.ui.menu.adapter
 
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.VideoView
import androidx.recyclerview.widget.RecyclerView
import com.facebook.drawee.drawable.ScalingUtils
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder
import com.facebook.drawee.generic.RoundingParams
import com.facebook.drawee.view.SimpleDraweeView
import com.kuanzhai.user.R
import com.kuanzhai.user.views.textbanner.utils.DisplayUtils
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
import com.youth.banner.adapter.BannerAdapter
 
 
class CarBannerAdapter(datas:ArrayList<String>,val hasVideo:Boolean = false): BannerAdapter<String, RecyclerView.ViewHolder>(datas){
    var videoView:StandardGSYVideoPlayer? = null
    override fun onCreateHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        if (viewType == 2){
            val imageView = SimpleDraweeView(parent.context)
            //注意,必须设置为match_parent,这个是viewpager2强制要求的
            imageView.layoutParams = ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT
            )
            val build = GenericDraweeHierarchyBuilder(parent.context.resources).build()
            build.actualImageScaleType = ScalingUtils.ScaleType.CENTER_CROP
            imageView.hierarchy = build
            return BannerViewHolder(imageView)
        }else{
            val inflate = LayoutInflater.from(parent.context)
                .inflate(R.layout.item_banner_video, parent, false)
            val imageView = inflate.findViewById<StandardGSYVideoPlayer>(R.id.video)
            imageView.backButton.visibility = View.GONE
            imageView.fullscreenButton.visibility = View.GONE
            return VideoViewHolder(inflate)
        }
    }
 
    override fun getItemViewType(position: Int): Int {
        return if (hasVideo&&getRealPosition(position) == 0) 1 else 2
    }
 
    override fun onBindView(holder: RecyclerView.ViewHolder, data: String, position: Int, size: Int) {
        if (holder.itemViewType == 2)
            (holder as BannerViewHolder).imageView.setImageURI(data)
        else{
            videoView =  (holder as VideoViewHolder).mVideoView
            videoView?.setUpLazy(data, true, null, null, "")
            val gsyVideoManager = videoView?.gsyVideoManager as GSYVideoManager
            videoView?.setVideoAllCallBack(object : VideoAllCallBack {
                override fun onStartPrepared(url: String?, vararg objects: Any?) {
 
                }
 
                override fun onPrepared(url: String?, vararg objects: Any?) {
                    gsyVideoManager.isNeedMute = true
                }
 
                override fun onClickStartIcon(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickStartError(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickStop(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickStopFullscreen(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickResume(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickResumeFullscreen(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickSeekbar(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickSeekbarFullscreen(url: String?, vararg objects: Any?) {
                }
 
                override fun onAutoComplete(url: String?, vararg objects: Any?) {
                }
 
                override fun onEnterFullscreen(url: String?, vararg objects: Any?) {
                }
 
                override fun onQuitFullscreen(url: String?, vararg objects: Any?) {
                }
 
                override fun onQuitSmallWidget(url: String?, vararg objects: Any?) {
                }
 
                override fun onEnterSmallWidget(url: String?, vararg objects: Any?) {
                }
 
                override fun onTouchScreenSeekVolume(url: String?, vararg objects: Any?) {
                }
 
                override fun onTouchScreenSeekPosition(url: String?, vararg objects: Any?) {
                }
 
                override fun onTouchScreenSeekLight(url: String?, vararg objects: Any?) {
                }
 
                override fun onPlayError(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickStartThumb(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickBlank(url: String?, vararg objects: Any?) {
                }
 
                override fun onClickBlankFullscreen(url: String?, vararg objects: Any?) {
                }
            })
            videoView?.startPlayLogic()
        }
    }
 
    class BannerViewHolder(view: SimpleDraweeView) :
        RecyclerView.ViewHolder(view) {
        var imageView: SimpleDraweeView
        init {
            imageView = view
        }
    }
 
    class VideoViewHolder(view: View) :
        RecyclerView.ViewHolder(view) {
        var mVideoView: StandardGSYVideoPlayer
        init {
            mVideoView = view.findViewById(R.id.video)
        }
    }
}