我是Android MVVM的新手,因此我需要执行图像裁剪并请求访问图像库的权限,而我困惑于应在片段中还是在视图模型中执行这些操作。
开始为我使用此代码的设备上保存的预先获取图像进行裁剪活动
CropImage.activity(selectedImagePosterFromGalleryUri)
.setGuidelines(CropImageView.Guidelines.ON)
.setRequestedSize(posterMaxWidthSize, posterMaxHeightSize, CropImageView.RequestSizeOptions.RESIZE_INSIDE)
.start(mContext, this)
onActivityResult
时可以在我的片段的requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE
中访问此代码的结果(裁剪的图像)>
如果将其视为用户输入,我会感到困惑,因此可以将这段代码放在片段中,或者将其视为逻辑/进程,以便将其放置在viewmodel中?
并且我还需要请求访问画廊的权限,请允许我使用一个库,并且代码将如下所示。我必须放入片段或视图模型吗?
@AfterPermissionGranted(PERMISSION_READ_EXTERNAL_STORAGE) private fun checkPermission() { if (EasyPermissions.hasPermissions(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)) { chooseImageFromGallery() } else { EasyPermissions.requestPermissions( this, "we need your permission to access your gallery", PERMISSION_READ_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE) } } override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) } override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) { if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) { // showing app setting, so the user eventually can switch the permission manually in the setting section AppSettingsDialog.Builder(this).build().show() } } override fun onPermissionsGranted(requestCode: Int, perms: MutableList<String>) { }
让我感到困惑的是从这里https://developer.android.com/jetpack/docs/guide这句话,说:
在“活动”或“分段。这些基于UI的类应仅包含以下逻辑:处理UI和操作系统的交互。
如果将裁剪图像和访问画廊视为处理UI和操作系统交互的逻辑,我感到困惑
我真的不明白选择代码应该在视图模型中还是在视图中(片段/活动)。对于业务逻辑,很明显应该在viewmodel中,但是这些代码呢?请帮助
我是Android MVVM的新手,因此我需要执行图像裁剪并请求访问图像库的权限,而我困惑这些操作应该在片段中还是在视图模型中执行。到...
根据Google家伙,
您应将其放在ViewModel中,并传递函数所需的必要参数。