J'utilise cette Crop bibliothèque de SoundCloud. La sélection d'une vue d'image, la sélection d'une image, le recadrage et l'affichage du résultat dans la vue d'image fonctionnent très bien. Mais maintenant, j'essaye de le faire avec deux vues d'image différentes avec des spécifications différentes. Je n'obtiens aucune erreur et je ne vois aucun résultat. Voici ce que j'ai essayé:

//My click listeners
regCoverPhoto.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Crop.pickImage(getActivity(), EditProfileDialog.this, REQUEST_CODE_COVER);
    }
});
regUserProfile.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Crop.pickImage(getActivity(), EditProfileDialog.this, REQUEST_CODE_PROFILE);
    }
});
//Handling the result
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_PROFILE && resultCode == Activity.RESULT_OK) {
        beginCropProfile(data.getData());
    }else if(requestCode == REQUEST_CODE_COVER && resultCode == Activity.RESULT_OK){
        beginCropCover(data.getData());
    } else if (requestCode == Crop.REQUEST_CROP) {
        handleCrop(requestCode, resultCode, data);
    }
}

private void beginCropProfile(Uri source) {
    Uri destination = Uri.fromFile(new File(getActivity().getCacheDir(), "cropped"));
    Crop.of(source, destination).withAspect(ASPECT_X, ASPECT_Y).start(getActivity(), EditProfileDialog.this, REQUEST_CODE_COVER);
}

private void beginCropCover(Uri source) {
    Uri destination = Uri.fromFile(new File(getActivity().getCacheDir(), "cropped"));
    Crop.of(source, destination).asSquare().start(getActivity(), EditProfileDialog.this, REQUEST_CODE_PROFILE);
}

private void handleCrop(int requestCode, int resultCode, Intent result) {
    if (requestCode == REQUEST_CODE_COVER && resultCode == Activity.RESULT_OK) {
        regCoverPhoto.setImageURI(Crop.getOutput(result));

        mCoverPhotoUri = Crop.getOutput(result);
        uploadCoverToStorage();

        Log.d(TAG,"ResultCover: " + Crop.getOutput(result).toString());
    }else if(requestCode == REQUEST_CODE_PROFILE && resultCode == Activity.RESULT_OK){
        regUserProfile.setImageURI(Crop.getOutput(result));
        mProfilePhotoUri = Crop.getOutput(result);
        uploadProfileToStorage();
        Log.d(TAG,"ResultProfile: " + Crop.getOutput(result).toString());
    } else if (resultCode == Crop.RESULT_ERROR) {
        Snackbar.make(getView(), Crop.getError(result).getMessage(), Snackbar.LENGTH_LONG).show();
    }
}
2
Steve C. 7 août 2017 à 04:43

2 réponses

Meilleure réponse

Je n'ai pas particulièrement utilisé cette bibliothèque, mais les codes de demande personnalisés semblent être le problème.

Utilisez des codes de requête différents pour la cueillette et le recadrage (4 codes de requête au total) car vous devrez les gérer différemment et mettez à jour onActivityResult(), handleCrop() pour refléter cela.

Voir https://gist.github.com/vibinr/fcf54c5e7ab63b9184432cc44c9a1494

1
Vibin 18 août 2017 à 07:40

Veuillez vous référer à l'url suivante, cela peut vous aider. "https://www.bignerdranch.com/blog/understanding-androids- layoutinflater-gonfler / "

0
Shanmugapriya 17 août 2017 à 07:11