iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
1

Layout

利用VideoView撥放影片,並用ImageView當作撥放和暫停的按鈕
將ImageView的visibility屬性改為gone,代表隱藏且不占畫面的面積

<VideoView
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:id="@+id/videoView"
    app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"/>
<ImageView
    android:visibility="gone"
    android:layout_width="40dp"
    android:layout_height="40dp" app:srcCompat="@android:drawable/ic_media_pause"
    android:id="@+id/imageView" android:layout_weight="1"
    app:layout_constraintStart_toStartOf="@+id/videoView"
    app:layout_constraintEnd_toEndOf="@+id/videoView" android:layout_marginEnd="8dp"
    app:layout_constraintTop_toTopOf="@+id/videoView" android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toBottomOf="@+id/videoView"/>

Method

初始設定

在res資料夾中新增一個叫raw的資料夾,並把要撥放的影片放在裡面
利用.setVideoURI()載入影片,.start()開始撥放影片

videoView.setVideoURI(Uri.parse("android.resource://" + packageName + "/" + R.raw.firework))
videoView.start()

撥放和暫停

使用.isPlaying取得影片的撥放狀態
當影片在撥放時,使用.pause()暫停影片,影片暫停時用.start()撥放影片

imageView.setOnClickListener {
    if (videoView.isPlaying) {
        //更換ImageView的圖示
        imageView.setImageResource(android.R.drawable.ic_media_play)
        videoView.pause()
    } else {
        imageView.setImageResource(android.R.drawable.ic_media_pause)
        videoView.start()
    }
}

當VideoView被按下時,讓ImageView改為可見,再次被按下時隱藏

videoView.setOnClickListener {
    if(imageView.isVisible){
        imageView.isVisible = false
    }else{
        imageView.isVisible = true
    }
}

實作成果

住屏東這麼久,第一次看到屏東這麼多人...


上一篇
Day 25 骰子(SensorManager)
下一篇
Day 27 Mixer(MediaPlayer)
系列文
高中生Kotlin實作30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言