我是新手,我需要幫助我無法解決問題,我不知道該怎么做。非常令人困惑,需要幫助(如果您對此進行解釋,我非常感謝您)。
我在看 Kotlin Project - Kotlin Android Instagram Clone using Firebase - Kotlin Instagram Clone
他使用ArthurHub/Android-Image-Cropper(但它是舊版本對嗎?),我發現一些新版本是CanHub/Android-Image-Cropper。

CropImage.activity() .setAspectRatio(1,1) .start(this@AccountSettingsActivity)

我無法使用此代碼,也不知道如何解決此問題,完全被迷惑了。
請幫助我,非常感謝。此致。
(你可以怪我,但不要苛刻我是新手,我不知道)
我需要幫助我無法解決我不知道該怎么做的問題。非常混亂,需要幫助
uj5u.com熱心網友回復:
既然您說您是新人,我將幫助您了解專案頁面的示例用法向您展示了什么。我一般只能這樣做,我沒有時間去實際創建一個示例專案來自己測驗它。
如果你遇到任何問題,你將不得不把它弄明白——這是編碼的重要組成部分!你很少能得到一個很好的簡單解決方案,它可以巧妙地融入你正在做的任何事情中,學習如何讓它為你作業是一項重要的發展技能。
如果您遇到困難,請始終查看專案頁面(在本例中為 Github 頁面)以獲取用戶指南,并且他們在存盤庫中也有一個示例專案,因此您可以了解它在完整應用程式中的作業方式。不要害怕看它,即使你不明白這一切——你做的越多,你就會明白的越多
無論如何,這是他們的例子:
直接呼叫crop
class MainActivity {
private val cropImage = registerForActivityResult(CropImageContract()) { result ->
if (result.isSuccessful) {
// Use the returned uri.
val uriContent = result.uriContent
val uriFilePath = result.getUriFilePath(context) // optional usage
} else {
// An error occurred.
val exception = result.error
}
}
我將在這里分解代碼——第一個部分顯示你在一個Activity. 您正在創建一個cropImage物件,它是由提供的 Activity 啟動器registerForActivityResult- 您launch稍后將呼叫它來開始您的裁剪Activity。
花括號中的 lambda 是當你得到一個result回傳時將運行的函式 - 這是你實際對裁剪影像執行某些操作的地方。在這種情況下,他們正在獲取影像的 URI——我不知道你需要什么,但你可以谷歌“從 URI 獲取位圖”或者如果你需要其他東西。
這整件事getResultFromActivity是AndroidX Activity 和 Fragment 庫的一部分——如果你想這樣做,你將需要它們(無論如何,在每個專案中使用它們是個好主意,AndroidX 的東西給你向后兼容性并節省你作業)。
設定完成后,您可以呼叫launch以cropImage打開裁剪活動。看起來他們給了你三個例子,有不同的選項(你可以組合這些選項,但你只呼叫launch一次):
private fun startCrop() {
// Start picker to get image for cropping and then use the image in cropping activity.
cropImage.launch(
options {
setGuidelines(Guidelines.ON)
}
)
他們將這些放在一個startCrop()函式中,您可以從例如按鈕單擊偵聽器中呼叫它們。這是在已啟動的 Activity 上設定一些指南選項 - 就像評論說的那樣,它會打開一個影像選擇器,以便用戶選擇影像。
// Start picker to get image for cropping from only gallery and then use the image in cropping activity.
cropImage.launch(
options {
setImagePickerContractOptions(
PickImageContractOptions(includeGallery = true, includeCamera = false)
)
}
)
這個(再次,就像評論說的那樣——這些東西可以幫助你)在選擇器上設定一些選項,特別是限制對畫廊影像的選擇。
// Start cropping activity for pre-acquired image saved on the device and customize settings.
cropImage.launch(
options(uri = imageUri) {
setGuidelines(Guidelines.ON)
setOutputCompressFormat(CompressFormat.PNG)
}
)
這做了幾件事:傳遞影像的 URI 以進行裁剪(而不是打開選擇器供用戶選擇),添加指南,并為生成的裁剪影像設定輸出格式。
請記住,這些都是您可能使用它的不同方式的示例。您可以組合選項,具體取決于您要如何配置 - 您在啟動裁剪活動之前設定選項。
使用裁剪視圖
這個看起來像是使用了一個View可以添加到布局中的自定義,它可以讓你裁剪影像:
// Add CropImageView into your activity
<!-- Image Cropper fill the remaining available height -->
<com.canhub.cropper.CropImageView
android:id="@ id/cropImageView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
因此,您將其添加到 Activity 的布局中(也可能在 Fragments 上作業,也許需要進行一些調整 - 我不是在測驗它,記住!)。大小并不重要——你可以弄清楚如何將視圖制作成你想要的那樣大。這只是View布局中的正常情況。
//Set image to crop
cropImageView.setImageUriAsync(uri)
// Or prefer using uri for performance and better user experience.
cropImageView.setImageBitmap(bitmap)
在 中Activity,通過參考CropImageView布局中的 ,您可以使用要使用的影像的 URI呼叫此設定影像函式。或者,如果你有的話,你可以Bitmap直接設定一個。一旦設定在 上CropImageView,用戶可以對其進行調整
// Subscribe to async event using cropImageView.setOnCropImageCompleteListener(listener)
cropImageView.getCroppedImageAsync()
// Or.
val cropped: Bitmap = cropImageView.getCroppedImage()
現在這個有點棘手 - 對我來說,你應該如何使用第一個并不完全清楚。因此,讓我們實際查看 中的代碼CropImageView,我們可以在其中了解它的作業原理并閱讀檔案。
驚喜!沒有getCroppedImageAsync()功能,只有croppedImageAsync一個(沒有get),看起來它做同樣的事情。沒關系。如果您使用的是 Android Studio 之類的 IDE,它可能會在您鍵入時建議正確的函式,您可以在此處閱讀檔案:
* Cropped image based on the current crop window to the given uri.
* The result will be invoked to listener set by [setOnCropImageCompleteListener].
好的,這看起來就像示例所暗示的那樣。您呼叫setOnCropImageCompleteListener一個函式來對生成的影像執行某些操作,如下所示:
cropImageView.setOnCropImageCompleteListener { view, result ->
// do something with cropped result
}
然后你呼叫croppedImageAsync(使用你想要的任何選項引數,檢查檔案)開始裁剪和存盤程序。完成后,您剛剛設定的回呼函式將與結果一起呼叫。
然后是自定義的 Activity 示例,但這對我來說已經足夠了——如果你真的想要,如果你能按照我們到目前為止的內容進行操作,那么你應該能夠解決剩下的問題。
由于您已經按照教程制作了一個應用程式,并且它使用了不同的庫(使用不同的做事方式),您必須弄清楚如何將該庫安裝到您自己的專案中。退后一步,看看你在教程中做了什么,你想要實作什么(比如啟動一個裁剪活動),并弄清楚你將如何在這個庫中實作相同的任務。
很多軟體開發都是試影像這樣將不同的部分組合在一起,而且很少能順利進行。不知道自己在做什么很正常!但是你必須坐下來解決它。希望這能讓您了解可以采取的學習方法——一開始有很多東西要學!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/531016.html
標籤:安卓图片安卓工作室科特林
