package me.xiaopan.sketchsample.fragment; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.SeekBar; import android.widget.TextView; import me.xiaopan.androidinjector.InjectContentView; import me.xiaopan.androidinjector.InjectView; import me.xiaopan.sketch.display.TransitionImageDisplayer; import me.xiaopan.sketch.request.ShapeSize; import me.xiaopan.sketchsample.AssetImage; import me.xiaopan.sketchsample.MyFragment; import me.xiaopan.sketchsample.R; import me.xiaopan.sketchsample.widget.MyImageView; @InjectContentView(R.layout.fragment_resize) public class ShapeSizeImageShaperTestFragment extends MyFragment { @InjectView(R.id.image_resizeFragment) MyImageView imageView; @InjectView(R.id.seekBar_resizeFragment_width) SeekBar widthSeekBar; @InjectView(R.id.text_resizeFragment_width) TextView widthProgressTextView; @InjectView(R.id.seekBar_resizeFragment_height) SeekBar heightSeekBar; @InjectView(R.id.text_resizeFragment_height) TextView heightProgressTextView; @InjectView(R.id.button_resizeFragment_fixStart) View fixStartButton; @InjectView(R.id.button_resizeFragment_fixCenter) View fixCenterButton; @InjectView(R.id.button_resizeFragment_fixEnd) View fixEndButton; @InjectView(R.id.button_resizeFragment_fixXY) View fixXYButton; @InjectView(R.id.button_resizeFragment_center) View centerButton; @InjectView(R.id.button_resizeFragment_centerCrop) View centerCropButton; @InjectView(R.id.button_resizeFragment_centerInside) View centerInsideButton; @InjectView(R.id.button_resizeFragment_matrix) View matrixButton; private int widthProgress = 50; private int heightProgress = 50; private ImageView.ScaleType scaleType = ImageView.ScaleType.FIT_CENTER; private View currentCheckedButton; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); imageView.getOptions().setImageDisplayer(new TransitionImageDisplayer()); widthSeekBar.setMax(100); widthSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress < 20) { widthSeekBar.setProgress(20); return; } int width = (int) ((widthSeekBar.getProgress() / 100f) * 1000); widthProgressTextView.setText(String.format("%d/%d", width, 1000)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { widthProgress = widthSeekBar.getProgress(); apply(currentCheckedButton); } }); widthSeekBar.setProgress(widthProgress); heightSeekBar.setMax(100); heightSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (progress < 20) { heightSeekBar.setProgress(20); return; } int height = (int) ((heightSeekBar.getProgress() / 100f) * 1000); heightProgressTextView.setText(String.format("%d/%d", height, 1000)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { heightProgress = heightSeekBar.getProgress(); apply(currentCheckedButton); } }); heightSeekBar.setProgress(heightProgress); fixStartButton.setTag(ImageView.ScaleType.FIT_START); fixCenterButton.setTag(ImageView.ScaleType.FIT_CENTER); fixEndButton.setTag(ImageView.ScaleType.FIT_END); fixXYButton.setTag(ImageView.ScaleType.FIT_XY); centerButton.setTag(ImageView.ScaleType.CENTER); centerCropButton.setTag(ImageView.ScaleType.CENTER_CROP); centerInsideButton.setTag(ImageView.ScaleType.CENTER_INSIDE); matrixButton.setTag(ImageView.ScaleType.MATRIX); View.OnClickListener buttonOnClickListener = new View.OnClickListener() { @Override public void onClick(View v) { scaleType = (ImageView.ScaleType) v.getTag(); apply(v); } }; fixStartButton.setOnClickListener(buttonOnClickListener); fixCenterButton.setOnClickListener(buttonOnClickListener); fixEndButton.setOnClickListener(buttonOnClickListener); fixXYButton.setOnClickListener(buttonOnClickListener); centerButton.setOnClickListener(buttonOnClickListener); centerCropButton.setOnClickListener(buttonOnClickListener); centerInsideButton.setOnClickListener(buttonOnClickListener); matrixButton.setOnClickListener(buttonOnClickListener); if (currentCheckedButton == null) { currentCheckedButton = fixCenterButton; } apply(currentCheckedButton); } private void apply(View button) { int width = (int) ((widthProgress / 100f) * 1000); int height = (int) ((heightProgress / 100f) * 1000); imageView.getOptions().setShapeSize(new ShapeSize(width, height, scaleType)); imageView.displayImage(AssetImage.MEI_NV); if (currentCheckedButton != null) { currentCheckedButton.setEnabled(true); } button.setEnabled(false); currentCheckedButton = button; } }