lebonprix.apk/java/io/xdrm/lebonprix/ResultActivity.kt

71 lines
2.3 KiB
Kotlin

package io.xdrm.lebonprix
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.util.Log
import android.view.WindowManager
import io.xdrm.lebonprix.anim.BarChart
import io.xdrm.lebonprix.anim.ResultOpeningAnimation
import io.xdrm.lebonprix.anim.ResultRangeAnimation
import kotlinx.android.synthetic.main.activity_result.*
class ResultActivity : AppCompatActivity() {
private var results: Array<Int>? = arrayOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_result)
// show results form calling activity (intent)
results = intent?.extras?.getSerializable("prices") as Array<Int>
// show opening transition
val anim = ResultOpeningAnimation(applicationContext, filter)
anim.duration = 500
anim.start()
// show results after animation
Handler().postDelayed({
showResultRange(result_range.measuredWidth, result_range.measuredHeight)
showResultChart(result_chart.measuredWidth, result_chart.measuredHeight)
// bind on layout changes
result_range.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
showResultRange(right-left, bottom-top)
}
result_chart.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
showResultChart(right-left, bottom-top)
}
}, 300)
}
private fun showResultRange(width: Int, height: Int) {
if( results.isNullOrEmpty() )
return
// (1) slider range
val slider = ResultRangeAnimation(this, result_range, width, height)
slider.setData(results!!.size, results!!.min()!!.toFloat(), results!!.average().toFloat(), results!!.max()!!.toFloat())
slider.duration = 1000
slider.start()
}
private fun showResultChart(width: Int, height: Int){
if( results.isNullOrEmpty() )
return
// (1) bar chart
val chart = BarChart(results!!, width, height, applicationContext)
result_chart.setImageDrawable(chart)
}
}