Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.surelabsid.pengenalanhuruf
- import android.media.MediaPlayer
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.provider.MediaStore
- import android.view.LayoutInflater
- import android.view.View
- import android.view.ViewGroup
- import android.widget.RelativeLayout
- import androidx.viewpager.widget.PagerAdapter
- import androidx.viewpager.widget.ViewPager
- import com.bumptech.glide.Glide
- import com.surelabsid.pengenalanhuruf.databinding.ActivityLetsPlayBinding
- import com.surelabsid.pengenalanhuruf.databinding.ItemGambarAdapterBinding
- class LetsPlayActivity : AppCompatActivity() {
- //deklarasi view binding
- private lateinit var binding: ActivityLetsPlayBinding
- //dekrasikan resource yang akan kita pakai
- private val huruf = arrayListOf("A", "B", "C", "D", "E", "F")
- //deklarasikan gambar huruf
- private val gambarHuruf = arrayListOf(
- R.drawable.a,
- R.drawable.b,
- R.drawable.c,
- R.drawable.d,
- R.drawable.e,
- R.drawable.f
- )
- //deklrasi suara hurufnya
- private val suaraHuruf = arrayListOf(
- R.raw.a,
- R.raw.b,
- R.raw.c,
- R.raw.d,
- R.raw.e,
- R.raw.f,
- )
- //private pageAdapter
- private lateinit var adapter: PagerAdapter
- //dekrasi media player
- private var mMediaPlayer: MediaPlayer? = null
- //deklarasi variable untuk event ketika halaman di swipe kiri/kanan
- private val onPageListener = object: ViewPager.OnPageChangeListener{
- override fun onPageScrolled(
- position: Int,
- positionOffset: Float,
- positionOffsetPixels: Int
- ) {
- }
- //ini dipanggil ketika halaman di munculkan/sedang aktif
- override fun onPageSelected(position: Int) {
- startAudio(position)
- }
- override fun onPageScrollStateChanged(state: Int) {
- }
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityLetsPlayBinding.inflate(layoutInflater)
- setContentView(binding.root)
- adapter = AdapterGambar()
- binding.viewPager.adapter = adapter
- binding.viewPager.addOnPageChangeListener(onPageListener)
- //pemutaran suara pertama kali
- binding.viewPager.currentItem = 0
- //function untuk memutar suara berdasarkan index array suara huruf
- startAudio(0)
- }
- private fun destroyMediaPlayer(){
- if(mMediaPlayer != null){
- mMediaPlayer?.reset()
- mMediaPlayer?.release()
- }
- mMediaPlayer = null
- }
- override fun onStop() {
- super.onStop()
- destroyMediaPlayer()
- }
- private fun startAudio(position: Int) {
- if(mMediaPlayer != null){
- mMediaPlayer?.reset()
- mMediaPlayer?.release()
- }
- // prepare suara huruf sesuai dengan posisi halaman yang sedang aktif sekarang
- mMediaPlayer = MediaPlayer.create(this@LetsPlayActivity, suaraHuruf[position])
- mMediaPlayer?.start()
- }
- private inner class AdapterGambar: PagerAdapter(){
- override fun getCount(): Int {
- return gambarHuruf.size
- }
- override fun isViewFromObject(view: View, `object`: Any): Boolean {
- return view === `object` as RelativeLayout
- }
- override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
- container.removeView(`object` as RelativeLayout)
- }
- override fun instantiateItem(container: ViewGroup, position: Int): Any {
- //deklrasi layout untuk masing-masing halaman
- val binding = ItemGambarAdapterBinding.inflate(
- LayoutInflater.from(container.context), container, false
- )
- //load gambar hurufnya pake glide
- Glide.with(this@LetsPlayActivity)
- .load(gambarHuruf[position])
- .into(binding.gambarHuruf)
- //jangan lupa set hurufnya sesuai dengan page yang aktif sekarang
- binding.huruf.text = huruf[position]
- //load gambar untuk imageview say it
- Glide.with(this@LetsPlayActivity)
- .load(R.drawable.audio)
- .into(binding.sayIt)
- //kasih klik untuk ikon/imageview say it. Buat puter ulang suaranya
- binding.sayIt.setOnClickListener {
- this@LetsPlayActivity.startAudio(position)
- }
- //tambahin element ke view pager
- (container as ViewPager).addView(binding.root)
- return binding.root
- }
- }
- }
Add Comment
Please, Sign In to add comment