in RenderScriptMigrationSample/app/src/main/java/com/android/example/rsmigration/MainActivity.kt [79:173]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Load bitmap resources
mInputImage = loadBitmap(R.drawable.data)
// Set up image processors
val imageProcessors = mutableListOf(
// RenderScript intrinsics
RenderScriptImageProcessor(this, useIntrinsic = true),
// RenderScript script kernels
RenderScriptImageProcessor(this, useIntrinsic = false),
// Vulkan compute pipeline
VulkanImageProcessor(this))
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
// RenderEffect
imageProcessors.add(RenderEffectImageProcessor())
}
mImageProcessors = imageProcessors.toTypedArray()
mImageProcessors.forEach { processor ->
processor.configureInputAndOutput(mInputImage, NUMBER_OF_OUTPUT_IMAGES)
}
mCurrentProcessor = mImageProcessors[0]
// Set up image view
mImageView = findViewById(R.id.imageView)
mLatencyTextView = findViewById(R.id.latencyText)
// Set up seek bar
mSeekBar = findViewById(R.id.seekBar)
mSeekBar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
startUpdateImage(progress)
}
override fun onStartTrackingTouch(seekBar: SeekBar) {}
override fun onStopTrackingTouch(seekBar: SeekBar) {}
})
mSeekBar.progress = 50
// Set up spinner for image processor selection
mProcessorSpinner = findViewById(R.id.processorSpinner)
ArrayAdapter.createFromResource(
this,
R.array.processor_array,
android.R.layout.simple_spinner_item
).also { adapter ->
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
mProcessorSpinner.adapter = adapter
}
mProcessorSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
mCurrentProcessor = mImageProcessors[position]
startUpdateImage(mSeekBar.progress)
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
// Set up spinner for filter mode selection
mFilterSpinner = findViewById(R.id.filterSpinner)
ArrayAdapter.createFromResource(
this,
R.array.filter_array,
android.R.layout.simple_spinner_item
).also { adapter ->
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
mFilterSpinner.adapter = adapter
}
mFilterSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
mFilterMode = FilterMode.values()[position]
startUpdateImage(mSeekBar.progress)
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
// Set up benchmark button
mBenchmarkButton = findViewById(R.id.benchmarkButton)
mBenchmarkButton.setOnClickListener { startBenchmark() }
}