sigitsuryono25

Untitled

Feb 26th, 2021
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.94 KB | None | 0 0
  1. import android.media.MediaPlayer
  2. import android.os.Bundle
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import android.widget.RelativeLayout
  7. import androidx.appcompat.app.AppCompatActivity
  8. import androidx.viewpager.widget.PagerAdapter
  9. import androidx.viewpager.widget.ViewPager
  10. import com.bumptech.glide.Glide
  11. import com.surelabsid.pengenalanbahasajepang.databinding.ActivityLetsPlayBinding
  12. import com.surelabsid.pengenalanbahasajepang.databinding.ItemGambarAdapterBinding
  13.  
  14. class LetsPlayActivity : AppCompatActivity() {
  15. private lateinit var binding: ActivityLetsPlayBinding
  16.  
  17. //deklrasi variable untuk menampung resources yang akan dipakai
  18. private val angka = arrayListOf(
  19. "1",
  20. "2",
  21. "3",
  22. "4",
  23. "5",
  24. "6",
  25. "7",
  26. "8",
  27. "9",
  28. "10"
  29. )
  30.  
  31. //deklarasi suara angka
  32. private val suaraAngka = arrayListOf(
  33. R.raw.satu,
  34. R.raw.dua,
  35. R.raw.tiga,
  36. R.raw.empat,
  37. R.raw.lima,
  38. R.raw.enam,
  39. R.raw.tujuh,
  40. R.raw.delapan,
  41. R.raw.sembilan,
  42. R.raw.sepuluh
  43. )
  44.  
  45. //deklarasi gambar angka
  46. private val gambarAngka = arrayListOf(
  47. R.drawable.satu,
  48. R.drawable.dua,
  49. R.drawable.tiga,
  50. R.drawable.empat,
  51. R.drawable.lima,
  52. R.drawable.enam,
  53. R.drawable.tujuh,
  54. R.drawable.delapan,
  55. R.drawable.sembilan,
  56. R.drawable.sepuluh
  57. )
  58.  
  59. //deklarasi adapter untuk halaman
  60. private lateinit var adapter: PagerAdapter
  61.  
  62. //deklarasi media player
  63. private var mMediaPlayer: MediaPlayer? = null
  64.  
  65. //deklarasi variable untuk event ketika di swipe kiri/kanan
  66. private val onPageListener = object : ViewPager.OnPageChangeListener {
  67. override fun onPageScrolled(
  68. position: Int,
  69. positionOffset: Float,
  70. positionOffsetPixels: Int
  71. ) {
  72.  
  73. }
  74.  
  75. override fun onPageSelected(position: Int) {
  76. //ketika si halaman di munculkan/terpilih
  77. startAudio(position)
  78. }
  79.  
  80. override fun onPageScrollStateChanged(state: Int) {
  81.  
  82. }
  83.  
  84. }
  85.  
  86. override fun onCreate(savedInstanceState: Bundle?) {
  87. super.onCreate(savedInstanceState)
  88.  
  89. binding = ActivityLetsPlayBinding.inflate(layoutInflater)
  90.  
  91. setContentView(binding.root)
  92.  
  93. //kasih nilai awal untuk adapternya
  94. adapter = AdapterGambar()
  95. binding.viewPager.adapter = adapter
  96. //fungsi nya untuk memberika si viewpager agar bisa
  97. //mendeteksi apakah halaman nya terganti/berganti
  98. binding.viewPager.addOnPageChangeListener(onPageListener)
  99.  
  100. //initial untuk suara dan halamannya
  101. //halaman awal
  102. binding.viewPager.currentItem = 0
  103. startAudio(0)
  104. }
  105.  
  106. override fun onStop() {
  107. super.onStop()
  108. destroyMediaPlayer()
  109. }
  110.  
  111. fun destroyMediaPlayer() {
  112. //check apakah media player is null
  113. if (mMediaPlayer != null) {
  114. mMediaPlayer?.reset()
  115. mMediaPlayer?.release()
  116. }
  117. mMediaPlayer = null
  118. }
  119.  
  120. fun startAudio(position: Int) {
  121. if (mMediaPlayer != null) {
  122. mMediaPlayer?.reset()
  123. mMediaPlayer?.release()
  124. }
  125.  
  126. mMediaPlayer = MediaPlayer.create(this@LetsPlayActivity, suaraAngka[position])
  127. mMediaPlayer?.start()
  128. }
  129.  
  130. private inner class AdapterGambar : PagerAdapter() {
  131. override fun getCount(): Int {
  132. return gambarAngka.size
  133. }
  134.  
  135. override fun isViewFromObject(view: View, `object`: Any): Boolean {
  136. return view === `object` as RelativeLayout
  137. }
  138.  
  139. override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
  140. container.removeView(`object` as RelativeLayout)
  141. }
  142.  
  143. override fun instantiateItem(container: ViewGroup, position: Int): Any {
  144. val binding = ItemGambarAdapterBinding.inflate(
  145. LayoutInflater.from(container.context),
  146. container,
  147. false
  148. )
  149. //load gambar angkanya pakai Glide
  150. Glide.with(this@LetsPlayActivity)
  151. .load(gambarAngka[position])
  152. .into(binding.gambarAngka)
  153.  
  154. //load gambar untuk replay
  155. Glide.with(this@LetsPlayActivity)
  156. .load(R.drawable.audio)
  157. .into(binding.replay)
  158.  
  159. //set angkanya sesuai dengan halaman sekarang
  160. binding.huruf.text = angka[position]
  161.  
  162. //kasih lik untuk ikon replay. Buat puter ulang suaranya
  163. binding.replay.setOnClickListener {
  164. this@LetsPlayActivity.startAudio(position)
  165. }
  166. (container as ViewPager).addView(binding.root)
  167. return binding.root
  168. }
  169.  
  170. }
  171. }
Add Comment
Please, Sign In to add comment