package com.bawei.moni003.model.base
abstract class BasePresenter<V> {
var mView:V?=null
}
package com.bawei.moni003.model.base
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
abstract class BaseFragment<V,P:BasePresenter<V>> :Fragment() {
var mPresenter:P?=null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(setLayoutId(),container,false)
}
abstract fun setLayoutId(): Int
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
mPresenter=createPresenter()
mPresenter?.mView=this as V
initData()
}
abstract fun initData()
abstract fun createPresenter(): P?
}
package com.bawei.moni003.model.base
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
abstract class BaseActivity :AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(setLayoutId())
initData()
}
abstract fun setLayoutId(): Int
abstract fun initData()
}
Main页面的java
package com.bawei.moni003.view.activity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.bawei.moni003.R
import com.bawei.moni003.view.fragment.FytFragment
import com.bawei.moni003.view.fragment.RyFragment
import com.bawei.moni003.view.fragment.TjFragment
import com.google.android.material.tabs.TabLayout
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
var fytFragment=FytFragment()
var tjFragment=TjFragment()
var ryFragment=RyFragment()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initTop()
supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,fytFragment)
}
private fun initTop() {
val titles= arrayOf("放映厅","推荐","热映","预告","说电影")
for (i in 0..4){
tabLayout_id.addTab(tabLayout_id.newTab().setText(titles[i]))
}
tabLayout_id.addOnTabSelectedListener(object :TabLayout.OnTabSelectedListener{
override fun onTabReselected(p0: TabLayout.Tab?) {
}
override fun onTabUnselected(p0: TabLayout.Tab?) {
}
override fun onTabSelected(p0: TabLayout.Tab?) {
p0?.apply {
when(position){
0 ->supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,fytFragment).commit()
1 ->supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,tjFragment).commit()
2 ->supportFragmentManager.beginTransaction().replace(R.id.frameLayout_id,ryFragment).commit()
}
}
}
})
}
}
视频播放的java
package com.bawei.moni003.view.activity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import cn.jzvd.Jzvd
import com.bawei.moni003.R
import com.bawei.moni003.model.bean.Playroom
import com.bawei.moni003.view.adapter.PlAdapter
import com.bumptech.glide.Glide
import kotlinx.android.synthetic.main.activity_main2.*
import kotlinx.android.synthetic.main.fragment_fyt.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
class MainActivity2 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
}
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
fun receiver(player:Playroom){
textView_Name_jzvd.text=player.title
Glide.with(this).load(player.image).into(jzvdStd_id.posterImageView)
jzvdStd_id.setUp(player.videourl,player.title)
recyclerView_PL.layoutManager=LinearLayoutManager(this)
recyclerView_PL.adapter=PlAdapter(player.comments)
}
override fun onStart() {
super.onStart()
EventBus.getDefault().register(this)
}
override fun onStop() {
super.onStop()
EventBus.getDefault().unregister(this)
}
override fun onBackPressed() {
super.onBackPressed()
if(Jzvd.backPress()){
return
}
super.onBackPressed()
}
override fun onPause() {
super.onPause()
Jzvd.releaseAllVideos()
}
}
fragment类
package com.bawei.moni003.view.fragment
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.bawei.moni003.R
import com.bawei.moni003.model.http.HttpUtils
import com.bawei.moni003.view.adapter.FytAdapter
import kotlinx.android.synthetic.main.fragment_fyt.*
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking
class FytFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_fyt,container,false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
recyclerView_jzvd.layoutManager=LinearLayoutManager(context)
runBlocking {
val fyt=async {
HttpUtils.apiService.getPaly()
}
recyclerView_jzvd.adapter=FytAdapter(fyt.await().playroom)
}
}
}
package com.bawei.moni003.view.fragment
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.bawei.moni003.R
import com.bawei.moni003.model.base.BaseFragment
import com.bawei.moni003.model.bean.Banner
import com.bawei.moni003.model.bean.Hotrecommend
import com.bawei.moni003.model.contact.HotMoiveCotract
import com.bawei.moni003.model.http.HttpUtils
import com.bawei.moni003.view.adapter.JcycAdapter
import com.bawei.moni003.view.adapter.ZzsyAdapter
import com.bawei.moni003.view.presenter.HotMoiveImpl
import com.facebook.drawee.view.SimpleDraweeView
import kotlinx.android.synthetic.main.fragment_tj.*
import kotlinx.coroutines.async
import kotlinx.coroutines.runBlocking
class TjFragment : BaseFragment<HotMoiveCotract.HotMoiveView,HotMoiveImpl>(),HotMoiveCotract.HotMoiveView {
override fun setLayoutId()=R.layout.fragment_tj
override fun createPresenter(): HotMoiveImpl? = HotMoiveImpl()
override fun onSuccess(hotrecommend: List<Hotrecommend>) {
recyclerView_ZZSY.adapter=ZzsyAdapter(hotrecommend)
}
override fun initData() {
mPresenter?.getHotMoiverData()
recyclerView_ZZSY.layoutManager=LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false)
recyclerView_JCYC.layoutManager=LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false)
runBlocking {
val banners=async { HttpUtils.apiService.getBanner()}
xBanner_TJ.setBannerData(R.layout.banner_item,banners.await().banner)
xBanner_TJ.loadImage { banner, model, view, position ->
(view as SimpleDraweeView).setImageURI((model as Banner).image)
}
val excell=async {
HttpUtils.apiService.getExcellent()
}
recyclerView_JCYC.adapter=JcycAdapter(excell.await().excellentrepresentation)
}
}
}