sigitsuryono25

LetsPlayActivity

Feb 16th, 2021
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.71 KB | None | 0 0
  1. package com.surelabsid.pengenalanhuruf
  2.  
  3. import android.media.MediaPlayer
  4. import androidx.appcompat.app.AppCompatActivity
  5. import android.os.Bundle
  6. import android.provider.MediaStore
  7. import android.view.LayoutInflater
  8. import android.view.View
  9. import android.view.ViewGroup
  10. import android.widget.RelativeLayout
  11. import androidx.viewpager.widget.PagerAdapter
  12. import androidx.viewpager.widget.ViewPager
  13. import com.bumptech.glide.Glide
  14. import com.surelabsid.pengenalanhuruf.databinding.ActivityLetsPlayBinding
  15. import com.surelabsid.pengenalanhuruf.databinding.ItemGambarAdapterBinding
  16.  
  17. class LetsPlayActivity : AppCompatActivity() {
  18. //deklarasi view binding
  19. private lateinit var binding: ActivityLetsPlayBinding
  20.  
  21. //dekrasikan resource yang akan kita pakai
  22. private val huruf = arrayListOf("A", "B", "C", "D", "E", "F")
  23.  
  24. //deklarasikan gambar huruf
  25. private val gambarHuruf = arrayListOf(
  26. R.drawable.a,
  27. R.drawable.b,
  28. R.drawable.c,
  29. R.drawable.d,
  30. R.drawable.e,
  31. R.drawable.f
  32. )
  33.  
  34. //deklrasi suara hurufnya
  35. private val suaraHuruf = arrayListOf(
  36. R.raw.a,
  37. R.raw.b,
  38. R.raw.c,
  39. R.raw.d,
  40. R.raw.e,
  41. R.raw.f,
  42. )
  43.  
  44. //private pageAdapter
  45. private lateinit var adapter: PagerAdapter
  46. //dekrasi media player
  47. private var mMediaPlayer: MediaPlayer? = null
  48.  
  49. //deklarasi variable untuk event ketika halaman di swipe kiri/kanan
  50. private val onPageListener = object: ViewPager.OnPageChangeListener{
  51. override fun onPageScrolled(
  52. position: Int,
  53. positionOffset: Float,
  54. positionOffsetPixels: Int
  55. ) {
  56.  
  57. }
  58.  
  59. //ini dipanggil ketika halaman di munculkan/sedang aktif
  60. override fun onPageSelected(position: Int) {
  61. startAudio(position)
  62. }
  63.  
  64. override fun onPageScrollStateChanged(state: Int) {
  65.  
  66. }
  67.  
  68. }
  69. override fun onCreate(savedInstanceState: Bundle?) {
  70. super.onCreate(savedInstanceState)
  71.  
  72. binding = ActivityLetsPlayBinding.inflate(layoutInflater)
  73. setContentView(binding.root)
  74.  
  75. adapter = AdapterGambar()
  76. binding.viewPager.adapter = adapter
  77. binding.viewPager.addOnPageChangeListener(onPageListener)
  78.  
  79. //pemutaran suara pertama kali
  80. binding.viewPager.currentItem = 0
  81.  
  82. //function untuk memutar suara berdasarkan index array suara huruf
  83. startAudio(0)
  84. }
  85.  
  86. private fun destroyMediaPlayer(){
  87. if(mMediaPlayer != null){
  88. mMediaPlayer?.reset()
  89. mMediaPlayer?.release()
  90. }
  91.  
  92. mMediaPlayer = null
  93. }
  94.  
  95. override fun onStop() {
  96. super.onStop()
  97. destroyMediaPlayer()
  98. }
  99.  
  100. private fun startAudio(position: Int) {
  101. if(mMediaPlayer != null){
  102. mMediaPlayer?.reset()
  103. mMediaPlayer?.release()
  104. }
  105.  
  106. // prepare suara huruf sesuai dengan posisi halaman yang sedang aktif sekarang
  107. mMediaPlayer = MediaPlayer.create(this@LetsPlayActivity, suaraHuruf[position])
  108. mMediaPlayer?.start()
  109. }
  110.  
  111. private inner class AdapterGambar: PagerAdapter(){
  112.  
  113. override fun getCount(): Int {
  114. return gambarHuruf.size
  115. }
  116.  
  117. override fun isViewFromObject(view: View, `object`: Any): Boolean {
  118. return view === `object` as RelativeLayout
  119. }
  120.  
  121. override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
  122. container.removeView(`object` as RelativeLayout)
  123. }
  124.  
  125. override fun instantiateItem(container: ViewGroup, position: Int): Any {
  126. //deklrasi layout untuk masing-masing halaman
  127. val binding = ItemGambarAdapterBinding.inflate(
  128. LayoutInflater.from(container.context), container, false
  129. )
  130.  
  131. //load gambar hurufnya pake glide
  132. Glide.with(this@LetsPlayActivity)
  133. .load(gambarHuruf[position])
  134. .into(binding.gambarHuruf)
  135.  
  136. //jangan lupa set hurufnya sesuai dengan page yang aktif sekarang
  137. binding.huruf.text = huruf[position]
  138.  
  139. //load gambar untuk imageview say it
  140. Glide.with(this@LetsPlayActivity)
  141. .load(R.drawable.audio)
  142. .into(binding.sayIt)
  143.  
  144. //kasih klik untuk ikon/imageview say it. Buat puter ulang suaranya
  145. binding.sayIt.setOnClickListener {
  146. this@LetsPlayActivity.startAudio(position)
  147. }
  148.  
  149. //tambahin element ke view pager
  150. (container as ViewPager).addView(binding.root)
  151.  
  152. return binding.root
  153. }
  154.  
  155. }
  156.  
  157. }
Add Comment
Please, Sign In to add comment