导航菜单

页面标题

页面副标题

Hopscotch v9.7.2 - UCropActivity.java 源代码

正在查看: Hopscotch v9.7.2 应用的 UCropActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.yalantis.ucrop;

import android.animation.ObjectAnimator;
import android.annotation.TargetApi;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Property;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AccelerateInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.activity.d;
import androidx.annotation.NonNull;
import androidx.appcompat.app.i;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.a;
import androidx.media3.ui.g;
import androidx.media3.ui.l;
import com.google.android.material.datepicker.m;
import com.payu.upisdk.util.UpiConstant;
import com.yalantis.ucrop.UCrop;
import com.yalantis.ucrop.callback.BitmapCropCallback;
import com.yalantis.ucrop.view.CropImageView;
import com.yalantis.ucrop.view.GestureCropImageView;
import com.yalantis.ucrop.view.OverlayView;
import com.yalantis.ucrop.view.TransformImageView;
import com.yalantis.ucrop.view.UCropView;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

public class UCropActivity extends i {
    public static final int ALL = 3;
    public static final Bitmap.CompressFormat DEFAULT_COMPRESS_FORMAT = Bitmap.CompressFormat.JPEG;
    public static final int DEFAULT_COMPRESS_QUALITY = 90;
    public static final int NONE = 0;
    public static final int ROTATE = 2;
    public static final int SCALE = 1;
    private static final int TABS_COUNT = 3;
    private static final String TAG = "UCropActivity";
    private View mBlockingView;
    private GestureCropImageView mGestureCropImageView;
    private OverlayView mOverlayView;
    private int mRootViewBackgroundColor;
    private boolean mShowBottomControls;
    private int mStatusBarColor;
    private int mToolbarCancelDrawable;
    private int mToolbarColor;
    private String mToolbarTitle;
    private int mToolbarWidgetColor;
    private UCropView mUCropView;
    private ViewGroup mWrapperStateAspectRatio;
    private ViewGroup mWrapperStateRotate;
    private ViewGroup mWrapperStateScale;
    private int OPEN_GALLERY = UpiConstant.MERCHANT_URL_LOADING_TIMEOUT;
    private int CROP_COMPLETED = 10001;
    private Bitmap.CompressFormat mCompressFormat = DEFAULT_COMPRESS_FORMAT;
    private int mCompressQuality = 90;
    private int[] mAllowedGestures = {1, 2, 3};
    private final View.OnClickListener mStateClickListener = new m(this, 2);
    private boolean isMoment = true;
    private TransformImageView.TransformImageListener mImageListener = new TransformImageView.TransformImageListener() {
        @Override
        public void onLoadComplete() {
            UCropActivity.this.mUCropView.animate().alpha(1.0f).setDuration(300L).setInterpolator(new AccelerateInterpolator());
            UCropActivity.this.mBlockingView.setClickable(false);
        }

        @Override
        public void onLoadFailure(@NonNull Exception exc) {
            UCropActivity.this.setResultError(exc);
            UCropActivity.this.finish();
        }

        @Override
        public void onRotate(float f) {
        }

        @Override
        public void onScale(float f) {
        }
    };

    @Retention(RetentionPolicy.SOURCE)
    public @interface GestureTypes {
    }

    private void addBlockingView() {
        if (this.mBlockingView == null) {
            this.mBlockingView = new View(this);
            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(-1, -1);
            layoutParams.addRule(3, R.id.toolbar);
            this.mBlockingView.setLayoutParams(layoutParams);
            this.mBlockingView.setClickable(true);
        }
        ((RelativeLayout) findViewById(R.id.ucrop_photobox)).addView(this.mBlockingView);
    }

    private void initiateRootViews() {
        UCropView uCropView = (UCropView) findViewById(R.id.ucrop);
        this.mUCropView = uCropView;
        this.mGestureCropImageView = uCropView.getCropImageView();
        this.mOverlayView = this.mUCropView.getOverlayView();
        this.mGestureCropImageView.setTransformImageListener(this.mImageListener);
        findViewById(R.id.ucrop_frame).setBackgroundColor(this.mRootViewBackgroundColor);
    }

    public void lambda$new$0(View view) {
        if (view.isSelected()) {
            return;
        }
        setWidgetState(view.getId());
    }

    public void lambda$setUpInfoText$1() {
        ObjectAnimator.ofFloat(findViewById(R.id.ucrop_info_text), (Property<View, Float>) View.ALPHA, CropImageView.DEFAULT_ASPECT_RATIO).start();
    }

    public void lambda$setupStatesWrapper$2(View view) {
        setResult(this.OPEN_GALLERY);
        finish();
    }

    public void lambda$setupStatesWrapper$3(View view) {
        rotateByAngle(90);
    }

    public void lambda$setupStatesWrapper$4(View view) {
        cropAndSaveImage();
    }

    private void processOptions(@NonNull Intent intent) {
        String stringExtra = intent.getStringExtra(UCrop.Options.EXTRA_COMPRESSION_FORMAT_NAME);
        Bitmap.CompressFormat valueOf = !TextUtils.isEmpty(stringExtra) ? Bitmap.CompressFormat.valueOf(stringExtra) : null;
        if (valueOf == null) {
            valueOf = DEFAULT_COMPRESS_FORMAT;
        }
        this.mCompressFormat = valueOf;
        this.mCompressQuality = intent.getIntExtra(UCrop.Options.EXTRA_COMPRESSION_QUALITY, 90);
        int[] intArrayExtra = intent.getIntArrayExtra(UCrop.Options.EXTRA_ALLOWED_GESTURES);
        if (intArrayExtra != null && intArrayExtra.length == 3) {
            this.mAllowedGestures = intArrayExtra;
        }
        this.mGestureCropImageView.setMaxBitmapSize(intent.getIntExtra(UCrop.Options.EXTRA_MAX_BITMAP_SIZE, 0));
        this.mGestureCropImageView.setMaxScaleMultiplier(intent.getFloatExtra(UCrop.Options.EXTRA_MAX_SCALE_MULTIPLIER, 10.0f));
        this.mGestureCropImageView.setImageToWrapCropBoundsAnimDuration(intent.getIntExtra(UCrop.Options.EXTRA_IMAGE_TO_CROP_BOUNDS_ANIM_DURATION, CropImageView.DEFAULT_IMAGE_TO_CROP_BOUNDS_ANIM_DURATION));
        this.mGestureCropImageView.setTargetAspectRatio(1.0f);
        this.mOverlayView.setFreestyleCropEnabled(intent.getBooleanExtra(UCrop.Options.EXTRA_FREE_STYLE_CROP, false));
        this.mOverlayView.setDimmedColor(intent.getIntExtra(UCrop.Options.EXTRA_DIMMED_LAYER_COLOR, getResources().getColor(R.color.ucrop_color_default_dimmed)));
        if (this.isMoment) {
            this.mOverlayView.setCircleDimmedLayer(intent.getBooleanExtra(UCrop.Options.EXTRA_CIRCLE_DIMMED_LAYER, false));
            this.mOverlayView.setShowCropFrame(intent.getBooleanExtra(UCrop.Options.EXTRA_SHOW_CROP_FRAME, true));
        } else {
            this.mOverlayView.setCircleDimmedLayer(true);
            this.mOverlayView.setShowCropFrame(false);
        }
        this.mOverlayView.setCropFrameColor(intent.getIntExtra(UCrop.Options.EXTRA_CROP_FRAME_COLOR, getResources().getColor(R.color.ucrop_color_default_crop_frame)));
        this.mOverlayView.setCropFrameStrokeWidth(intent.getIntExtra(UCrop.Options.EXTRA_CROP_FRAME_STROKE_WIDTH, getResources().getDimensionPixelSize(R.dimen.ucrop_default_crop_frame_stoke_width)));
        this.mOverlayView.setShowCropGrid(false);
        this.mOverlayView.setCropGridRowCount(intent.getIntExtra(UCrop.Options.EXTRA_CROP_GRID_ROW_COUNT, 2));
        this.mOverlayView.setCropGridColumnCount(intent.getIntExtra(UCrop.Options.EXTRA_CROP_GRID_COLUMN_COUNT, 2));
        this.mOverlayView.setCropGridColor(intent.getIntExtra(UCrop.Options.EXTRA_CROP_GRID_COLOR, getResources().getColor(R.color.ucrop_color_default_crop_grid)));
        this.mOverlayView.setCropGridStrokeWidth(intent.getIntExtra(UCrop.Options.EXTRA_CROP_GRID_STROKE_WIDTH, getResources().getDimensionPixelSize(R.dimen.ucrop_default_crop_grid_stoke_width)));
    }

    private void rotateByAngle(int i) {
        this.mGestureCropImageView.postRotate(i);
        this.mGestureCropImageView.setImageToWrapCropBounds();
    }

    private void setAllowedGestures(int i) {
        GestureCropImageView gestureCropImageView = this.mGestureCropImageView;
        int i2 = this.mAllowedGestures[i];
        gestureCropImageView.setScaleEnabled(i2 == 3 || i2 == 1);
        GestureCropImageView gestureCropImageView2 = this.mGestureCropImageView;
        int i3 = this.mAllowedGestures[i];
        gestureCropImageView2.setRotateEnabled(i3 == 3 || i3 == 2);
    }

    private void setImageData(@NonNull Intent intent) {
        Uri uri = (Uri) intent.getParcelableExtra(UCrop.EXTRA_INPUT_URI);
        Uri uri2 = (Uri) intent.getParcelableExtra(UCrop.EXTRA_OUTPUT_URI);
        processOptions(intent);
        if (uri == null || uri2 == null) {
            setResultError(new NullPointerException(getString(R.string.ucrop_error_input_data_is_absent)));
            finish();
            return;
        }
        try {
            this.mGestureCropImageView.setImageUri(uri, uri2);
        } catch (Exception e) {
            setResultError(e);
            finish();
        }
    }

    @TargetApi(21)
    private void setStatusBarColor(int i) {
        Window window = getWindow();
        if (window != null) {
            window.addFlags(Integer.MIN_VALUE);
            window.setStatusBarColor(i);
        }
    }

    private void setUpInfoText() {
        new Handler().postDelayed(new d(this, 24), 2000L);
    }

    private void setWidgetState(int i) {
        if (this.mShowBottomControls) {
            this.mWrapperStateAspectRatio.setSelected(i == R.id.state_done_click);
            ViewGroup viewGroup = this.mWrapperStateRotate;
            int i2 = R.id.state_rotate;
            viewGroup.setSelected(i == i2);
            ViewGroup viewGroup2 = this.mWrapperStateScale;
            int i3 = R.id.state_open_gallery;
            viewGroup2.setSelected(i == i3);
            if (i == i3) {
                setAllowedGestures(0);
            } else if (i == i2) {
                setAllowedGestures(1);
            } else {
                setAllowedGestures(2);
            }
        }
    }

    private void setupAppBar() {
        setStatusBarColor(this.mStatusBarColor);
        Toolbar findViewById = findViewById(R.id.toolbar);
        findViewById.setBackgroundColor(this.mToolbarColor);
        findViewById.setTitleTextColor(this.mToolbarWidgetColor);
        TextView textView = (TextView) findViewById.findViewById(R.id.toolbar_title);
        Typeface createFromAsset = Typeface.createFromAsset(getAssets(), getString(R.string.ucrop_averta_semibold));
        textView.setTextColor(this.mToolbarWidgetColor);
        textView.setText(this.mToolbarTitle);
        textView.setTypeface(createFromAsset);
        textView.setTextSize(20.0f);
        Drawable mutate = a.a.b(this, this.mToolbarCancelDrawable).mutate();
        mutate.setColorFilter(this.mToolbarWidgetColor, PorterDuff.Mode.SRC_ATOP);
        findViewById.setNavigationIcon(mutate);
        setSupportActionBar(findViewById);
        androidx.appcompat.app.a supportActionBar = getSupportActionBar();
        if (supportActionBar != null) {
            supportActionBar.x(false);
        }
    }

    private void setupStatesWrapper() {
        Typeface createFromAsset = Typeface.createFromAsset(getAssets(), getString(R.string.ucrop_averta_semibold));
        ImageView imageView = (ImageView) findViewById(R.id.image_view_open_gallery);
        imageView.setImageDrawable(imageView.getDrawable());
        ((TextView) findViewById(R.id.open_gallery_textview)).setTypeface(createFromAsset);
        ImageView imageView2 = (ImageView) findViewById(R.id.image_view_state_rotate);
        imageView2.setImageDrawable(imageView2.getDrawable());
        ((TextView) findViewById(R.id.rotate_textview)).setTypeface(createFromAsset);
        ImageView imageView3 = (ImageView) findViewById(R.id.image_view_done);
        imageView3.setImageDrawable(imageView3.getDrawable());
        ((TextView) findViewById(R.id.done_text)).setTypeface(createFromAsset);
        ((FrameLayout) findViewById(R.id.state_open_gallery)).setOnClickListener(new l(this, 6));
        ((FrameLayout) findViewById(R.id.state_rotate)).setOnClickListener(new androidx.media3.ui.m(this, 2));
        ((FrameLayout) findViewById(R.id.state_done_click)).setOnClickListener(new g(this, 4));
    }

    private void setupViews(@NonNull Intent intent) {
        this.mStatusBarColor = intent.getIntExtra(UCrop.Options.EXTRA_STATUS_BAR_COLOR, a.b(this, R.color.ucrop_color_new_statusbar));
        this.mToolbarColor = intent.getIntExtra(UCrop.Options.EXTRA_TOOL_BAR_COLOR, a.b(this, R.color.ucrop_color_new_toolbar));
        this.mToolbarWidgetColor = intent.getIntExtra(UCrop.Options.EXTRA_UCROP_WIDGET_COLOR_TOOLBAR, a.b(this, R.color.ucrop_color_toolbar_widget));
        this.mToolbarCancelDrawable = intent.getIntExtra(UCrop.Options.EXTRA_UCROP_WIDGET_CANCEL_DRAWABLE, R.drawable.ucrop_ic_cross);
        String stringExtra = intent.getStringExtra(UCrop.Options.EXTRA_UCROP_TITLE_TEXT_TOOLBAR);
        this.mToolbarTitle = stringExtra;
        if (stringExtra == null) {
            stringExtra = getResources().getString(R.string.ucrop_label_edit_photo);
        }
        this.mToolbarTitle = stringExtra;
        if (!this.isMoment) {
            this.mToolbarTitle = getResources().getString(R.string.ucrop_label_edit_photo_for_profile);
        }
        this.mShowBottomControls = !intent.getBooleanExtra(UCrop.Options.EXTRA_HIDE_BOTTOM_CONTROLS, false);
        this.mRootViewBackgroundColor = intent.getIntExtra(UCrop.Options.EXTRA_UCROP_ROOT_VIEW_BACKGROUND_COLOR, a.b(this, R.color.ucrop_color_crop_new_background));
        setupAppBar();
        initiateRootViews();
        if (this.mShowBottomControls) {
            View.inflate(this, R.layout.ucrop_controls, (ViewGroup) findViewById(R.id.ucrop_photobox));
            ViewGroup viewGroup = (ViewGroup) findViewById(R.id.state_done_click);
            this.mWrapperStateAspectRatio = viewGroup;
            viewGroup.setOnClickListener(this.mStateClickListener);
            ViewGroup viewGroup2 = (ViewGroup) findViewById(R.id.state_rotate);
            this.mWrapperStateRotate = viewGroup2;
            viewGroup2.setOnClickListener(this.mStateClickListener);
            ViewGroup viewGroup3 = (ViewGroup) findViewById(R.id.state_open_gallery);
            this.mWrapperStateScale = viewGroup3;
            viewGroup3.setOnClickListener(this.mStateClickListener);
            setupStatesWrapper();
            setUpInfoText();
        }
    }

    public void cropAndSaveImage() {
        this.mBlockingView.setClickable(true);
        this.mGestureCropImageView.cropAndSaveImage(this.mCompressFormat, this.mCompressQuality, new BitmapCropCallback() {
            @Override
            public void onBitmapCropped(@NonNull Uri uri, @NonNull Uri uri2, int i, int i2, int i3, int i4) {
                UCropActivity uCropActivity = UCropActivity.this;
                uCropActivity.setResultUri(uri, uri2, uCropActivity.mGestureCropImageView.getTargetAspectRatio(), i, i2, i3, i4);
                UCropActivity.this.finish();
            }

            @Override
            public void onCropFailure(@NonNull Throwable th) {
                UCropActivity.this.setResultError(th);
                UCropActivity.this.finish();
            }
        });
    }

    public void onCreate(Bundle bundle) {
        super/*androidx.fragment.app.n*/.onCreate(bundle);
        setContentView(R.layout.ucrop_activity_photobox);
        Intent intent = getIntent();
        if (getIntent() != null) {
            this.OPEN_GALLERY = getIntent().getIntExtra("OPEN_GALLERY", UpiConstant.MERCHANT_URL_LOADING_TIMEOUT);
            this.CROP_COMPLETED = getIntent().getIntExtra("CROP_COMPLETED", 10001);
            this.isMoment = getIntent().getBooleanExtra("IS_MOMENT", false);
        }
        setupViews(intent);
        setImageData(intent);
        addBlockingView();
    }

    public boolean onOptionsItemSelected(MenuItem menuItem) {
        if (menuItem.getItemId() == 16908332) {
            onBackPressed();
        }
        return super/*android.app.Activity*/.onOptionsItemSelected(menuItem);
    }

    public void onStop() {
        super.onStop();
        GestureCropImageView gestureCropImageView = this.mGestureCropImageView;
        if (gestureCropImageView != null) {
            gestureCropImageView.cancelAllAnimations();
        }
    }

    public void setResultError(Throwable th) {
        setResult(96, new Intent().putExtra(UCrop.EXTRA_ERROR, th));
    }

    public void setResultUri(Uri uri, Uri uri2, float f, int i, int i2, int i3, int i4) {
        setResult(this.CROP_COMPLETED, new Intent().putExtra(UCrop.EXTRA_INPUT_URI, uri).putExtra(UCrop.EXTRA_OUTPUT_URI, uri2).putExtra(UCrop.EXTRA_OUTPUT_CROP_ASPECT_RATIO, f).putExtra(UCrop.EXTRA_OUTPUT_IMAGE_WIDTH, i3).putExtra(UCrop.EXTRA_OUTPUT_IMAGE_HEIGHT, i4).putExtra(UCrop.EXTRA_OUTPUT_OFFSET_X, i).putExtra(UCrop.EXTRA_OUTPUT_OFFSET_Y, i2));
    }
}