175 lines
6.4 KiB
Java
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;
|
|
}
|
|
}
|