Files
HouseProperty/app/src/main/java/imageselector/ClipImageActivity.java
2020-08-03 09:11:54 +08:00

175 lines
6.4 KiB
Java

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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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;
}
}