package imageselector; import android.app.Activity; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; import com.sl.house_property.R; import java.io.File; import java.util.ArrayList; import imageselector.utils.ImageSelector; import imageselector.utils.ImageUtil; import imageselector.utils.StringUtils; import imageselector.view.ClipImageView; public class ClipImageActivity extends Activity { private FrameLayout btnConfirm; private FrameLayout btnBack; private ClipImageView imageView; private int mRequestCode; private boolean isCameraImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_clip_image); Intent intent = getIntent(); mRequestCode = intent.getIntExtra("requestCode", 0); setStatusBarColor(); ImageSelectorActivity.openActivity(this, mRequestCode, true, intent.getBooleanExtra(ImageSelector.IS_VIEW_IMAGE, true), intent.getBooleanExtra(ImageSelector.USE_CAMERA, true), 0, intent.getStringArrayListExtra(ImageSelector.SELECTED)); initView(); } /** * 修改状态栏颜色 */ private void setStatusBarColor() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.parseColor("#373c3d")); } } private void initView() { imageView = (ClipImageView) findViewById(R.id.process_img); btnConfirm = (FrameLayout) findViewById(R.id.btn_confirm); btnBack = (FrameLayout) findViewById(R.id.btn_back); btnConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (imageView.getDrawable() != null) { btnConfirm.setEnabled(false); confirm(imageView.clipImage()); } } }); btnBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data != null && requestCode == mRequestCode) { ArrayList images = data.getStringArrayListExtra(ImageSelector.SELECT_RESULT); isCameraImage = data.getBooleanExtra(ImageSelector.IS_CAMERA_IMAGE, false); Bitmap bitmap = ImageUtil.decodeSampledBitmapFromFile(images.get(0), 720, 1080); if (bitmap != null) { imageView.setBitmapData(bitmap); } else { finish(); } } else { finish(); } } private void confirm(Bitmap bitmap) { String imagePath = null; if (bitmap != null) { imagePath = ImageUtil.saveImage(bitmap, getCacheDir().getPath() + File.separator + "image_select"); bitmap.recycle(); bitmap = null; } if (StringUtils.isNotEmptyString(imagePath)) { ArrayList selectImages = new ArrayList<>(); selectImages.add(imagePath); Intent intent = new Intent(); intent.putStringArrayListExtra(ImageSelector.SELECT_RESULT, selectImages); intent.putExtra(ImageSelector.IS_CAMERA_IMAGE,isCameraImage); setResult(RESULT_OK, intent); } finish(); } public static void openActivity(Activity context, int requestCode, boolean isViewImage, boolean useCamera, ArrayList selected) { Intent intent = new Intent(context, ClipImageActivity.class); intent.putExtras(dataPackages(requestCode, isViewImage, useCamera, selected)); context.startActivityForResult(intent, requestCode); } public static void openActivity(Fragment fragment, int requestCode, boolean isViewImage, boolean useCamera, ArrayList selected) { Intent intent = new Intent(fragment.getContext(), ClipImageActivity.class); intent.putExtras(dataPackages(requestCode, isViewImage, useCamera, selected)); fragment.startActivityForResult(intent, requestCode); } public static void openActivity(android.app.Fragment fragment, int requestCode, boolean isViewImage, boolean useCamera, ArrayList selected) { Intent intent = new Intent(fragment.getActivity(), ClipImageActivity.class); intent.putExtras(dataPackages(requestCode, isViewImage, useCamera, selected)); fragment.startActivityForResult(intent, requestCode); } public static Bundle dataPackages(int requestCode, boolean isViewImage, boolean useCamera, ArrayList selected) { Bundle bundle = new Bundle(); bundle.putInt("requestCode", requestCode); bundle.putBoolean(ImageSelector.IS_VIEW_IMAGE, isViewImage); bundle.putBoolean(ImageSelector.USE_CAMERA, useCamera); bundle.putStringArrayList(ImageSelector.SELECTED, selected); return bundle; } @Override public void onConfigurationChanged(Configuration newConfig) { //非默认值 if (newConfig.fontScale != 1){ getResources(); } super.onConfigurationChanged(newConfig); } @Override public Resources getResources() {//还原字体大小 Resources res = super.getResources(); //非默认值 if (res.getConfiguration().fontScale != 1) { Configuration newConfig = new Configuration(); newConfig.setToDefaults();//设置默认 res.updateConfiguration(newConfig, res.getDisplayMetrics()); } return res; } }