瀏覽代碼

Move object animator into sound button

pull/1/head
Nils 8 年之前
父節點
當前提交
8ee2abf760
共有 2 個檔案被更改,包括 70 行新增51 行删除
  1. +49
    -51
      app/src/main/java/de/mlte/soundboard/MainActivity.kt
  2. +21
    -0
      app/src/main/java/de/mlte/soundboard/SoundButton.kt

+ 49
- 51
app/src/main/java/de/mlte/soundboard/MainActivity.kt 查看文件

@@ -19,6 +19,10 @@ import java.io.BufferedOutputStream


class MainActivity : AppCompatActivity() {
private val buttons = ArrayList<SoundButton>()
private var player: MediaPlayer? = null
private var playing = false

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
@@ -27,57 +31,6 @@ class MainActivity : AppCompatActivity() {

loadPreferences()

var player: MediaPlayer? = null
val progressBar = findViewById<ProgressBar>(R.id.progress_bar)
val objectAnimator = ObjectAnimator.ofInt(progressBar, "progress", progressBar.getProgress(), 1000)
objectAnimator.interpolator = LinearInterpolator()
progressBar.max = 1000
objectAnimator.addUpdateListener({ valueAnimator ->
val progress = valueAnimator.animatedValue as Int
progressBar.progress = progress
})
var playing = false

val btn = findViewById<TextView>(R.id.text_view_button)
btn.setOnClickListener {
if (playing) {
player?.let { mp ->
if (mp.isPlaying) {
mp.stop()
}
mp.reset()
mp.release()
}
objectAnimator.cancel()
playing = false
progressBar.progress = 0
} else {
val file = getFileStreamPath("audio")
if (file.exists()) {
val mp = MediaPlayer.create(this, Uri.fromFile(file))
mp.setOnCompletionListener {
progressBar.progress = 0
mp.reset()
mp.release()
playing = false
}
mp.start()
player = mp
playing = true

progressBar.progress = 0
objectAnimator.setDuration(mp.duration.toLong()).start()
}
}
}

btn.setOnLongClickListener {
val intent = Intent(baseContext, EditActivity::class.java)
intent.putExtra("caption", btn.text)
startActivityForResult(intent, 1234)

true
}
}

private fun duplicateButton() {
@@ -89,7 +42,50 @@ class MainActivity : AppCompatActivity() {
for (row in 0..1) {
for (col in 0..1) {
val soundButton = SoundButton(this, col, row)
buttons.add(soundButton)
parent.addView(soundButton)

soundButton.btn.setOnClickListener {
if (playing) {
player?.let { mp ->
if (mp.isPlaying) {
mp.stop()
}
mp.reset()
mp.release()
}
for (button in buttons) {
button.objectAnimator.cancel()
button.progressBar.progress = 0
}
playing = false
} else {
val file = getFileStreamPath("audio")
if (file.exists()) {
val mp = MediaPlayer.create(this, Uri.fromFile(file))
mp.setOnCompletionListener {
soundButton.progressBar.progress = 0
mp.reset()
mp.release()
playing = false
}
mp.start()
player = mp
playing = true

soundButton.progressBar.progress = 0
soundButton.objectAnimator.setDuration(mp.duration.toLong()).start()
}
}
}

soundButton.btn.setOnLongClickListener {
val intent = Intent(baseContext, EditActivity::class.java)
intent.putExtra("caption", soundButton.btn.text)
startActivityForResult(intent, 1234)

true
}
}
}
}
@@ -137,4 +133,6 @@ class MainActivity : AppCompatActivity() {
}
}
}


}

+ 21
- 0
app/src/main/java/de/mlte/soundboard/SoundButton.kt 查看文件

@@ -1,11 +1,19 @@
package de.mlte.soundboard

import android.animation.ObjectAnimator
import android.content.Context
import android.view.View
import android.view.animation.LinearInterpolator
import android.widget.FrameLayout
import android.widget.GridLayout
import android.widget.ProgressBar
import android.widget.TextView

class SoundButton : FrameLayout {
val progressBar: ProgressBar
val btn: TextView
val objectAnimator: ObjectAnimator

constructor(context: Context, col: Int, row: Int) : super(context) {
View.inflate(context, R.layout.layout_button, this)

@@ -15,5 +23,18 @@ class SoundButton : FrameLayout {
params.width = 0
params.height = 0
layoutParams = params

progressBar = findViewById<ProgressBar>(R.id.progress_bar)
btn = findViewById<TextView>(R.id.text_view_button)

objectAnimator = ObjectAnimator.ofInt(progressBar, "progress", progressBar.getProgress(), 1000)
objectAnimator.interpolator = LinearInterpolator()
progressBar.max = 1000
objectAnimator.addUpdateListener({ valueAnimator ->
val progress = valueAnimator.animatedValue as Int
progressBar.progress = progress
})
}


}

Loading…
取消
儲存