class MainActivity : AppCompatActivity() {
private val imagePicker = ImagePicker.newInstance()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.btnImagePick.setOnClickListener {
imagePicker.actionOpenDocument(this){
binding.ivBitmap.setImageBitmap(it)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
data?.let { imagePicker.onActivityResult(requestCode, resultCode, it, contentResolver) }
}
}
interface ImagePicker {
fun actionOpenDocument(activity: Activity, onReceiveBitmapListener : (Bitmap) -> Unit)
fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent, contentResolver: ContentResolver)
companion object {
fun newInstance(): ImagePicker {
return ImagePickerImpl()
}
}
}