package com.hjx.parent; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import androidx.core.content.FileProvider; import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; import com.google.android.material.bottomsheet.BottomSheetDialog; import com.prws.common.base.BaseActivity; import com.prws.common.base.BasePresenter; import com.prws.common.bean.ResponseResult; import com.prws.common.net.NetWorks; import com.prws.common.utils.LogUtil; import com.prws.common.utils.ScreenUtils; import com.prws.common.utils.SharedPreferencesUtil; import org.json.JSONObject; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map; import butterknife.BindView; import butterknife.OnClick; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import okhttp3.ResponseBody; public class AddStudentActivity extends BaseActivity { @Override protected int layoutResId() { return R.layout.activity_add_stu; } @Override public Object getContract() { return null; } @Override public BasePresenter getPresenter() { return null; } View view_2; View view_3; View view_4; View view_5; Button btn_next; TextView tv_name, tv_sex, tv_nian, tv_shen; @BindView(R.id.iv_avatar) ImageView iv_avatar; @Override protected void initView() { view_2 = findViewById(R.id.view_2); view_3 = findViewById(R.id.view_3); view_4 = findViewById(R.id.view_4); view_5 = findViewById(R.id.view_5); tv_name = findViewById(R.id.tv_name); tv_sex = findViewById(R.id.tv_sex); tv_nian = findViewById(R.id.tv_nian); tv_shen = findViewById(R.id.tv_shen); btn_next = findViewById(R.id.btn_next); } boolean isName = false; boolean isSex = false; boolean isNian = false; boolean isShen = false; private static int CAMERA_REQUEST_CODE = 343; private static int ALBUM_REQUEST_CODE = 456; private static int CROP_REQUEST_CODE = 234; private File tempFile; private String path; @Override protected void onStart() { super.onStart(); String name = (String) SharedPreferencesUtil.getData("setName", ""); String sex = (String) SharedPreferencesUtil.getData("setSex", ""); String nian = (String) SharedPreferencesUtil.getData("setNian", "") + SharedPreferencesUtil.getData("setXueq", ""); String shen = (String) SharedPreferencesUtil.getData("setShen", ""); if (name != null && name.length() > 0) { tv_name.setText(name); isName = true; } else { isName = false; } if (sex != null && sex.length() > 0) { tv_sex.setText(sex); isSex = true; } else { isSex = false; } if (nian != null && nian.length() > 0) { tv_nian.setText(nian); isNian = true; } else { isNian = false; } if (shen != null && shen.length() > 0) { tv_shen.setText(shen); isShen = true; } else { isShen = false; } if (isName && isSex && isNian && isShen) { btn_next.setTextColor(Color.WHITE); btn_next.setBackground(getResources().getDrawable(R.drawable.bg_solid_btn)); } } @Override protected void initListener() { view_2.setOnClickListener(view -> startActivity(NickActivity.class)); view_3.setOnClickListener(view -> startActivity(SexActivity.class)); view_4.setOnClickListener(view -> startActivity(NianActivity.class)); view_5.setOnClickListener(view -> startActivity(ShenActivity.class)); findViewById(R.id.tv_cancel).setOnClickListener(view -> onBackPressed()); btn_next.setOnClickListener(view -> { if (isName && isSex && isNian && isShen) { addStudent(); } else { Toast.makeText(this, "请完成设置后点击", Toast.LENGTH_SHORT).show(); } }); } @Override protected void onDestroy() { super.onDestroy(); SharedPreferencesUtil.putData("setName", ""); SharedPreferencesUtil.putData("setSex", ""); SharedPreferencesUtil.putData("setNian", ""); SharedPreferencesUtil.putData("setShen", ""); SharedPreferencesUtil.putData("setXueq", ""); SharedPreferencesUtil.putData("grade", 0); } public void addStudent() { String name = (String) SharedPreferencesUtil.getData("setName", ""); String sex = (String) SharedPreferencesUtil.getData("setSex", ""); String nian = (String) SharedPreferencesUtil.getData("setNian", ""); String shen = (String) SharedPreferencesUtil.getData("setShen", ""); String xueq = (String) SharedPreferencesUtil.getData("setXueq", ""); Map map = new HashMap(); map.put("nickName", name); map.put("gender", "男".equals(sex) ? 0 : 1); map.put("gradeId", SharedPreferencesUtil.getData("grade", 1)); map.put("parentIdentity", shen); map.put("term", xueq); if (path != null) { map.put("photo", path); } NetWorks.registerStudent(NetWorks.getMapRequestBody(map), new Observer() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseBody responseBody) { try { String str = responseBody.string().toString(); LogUtil.e(TAG, "----" + str); JSONObject jo = new JSONObject(str); boolean isSucceed = jo.getBoolean("success"); if (isSucceed) { finish(); } else { Toast.makeText(AddStudentActivity.this, jo.getString("msg"), Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace(); Toast.makeText(AddStudentActivity.this, "服务繁忙,请重试", Toast.LENGTH_SHORT).show(); } } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } @Override protected void initData() { } @Override public void onNetChanged(int netWorkState) { } @OnClick(R.id.iv_avatar) public void showButtonDialog(View view) { BottomSheetDialog dialog = new BottomSheetDialog(this, R.style.BottomSheetDialog); View bottomView = LayoutInflater.from(this).inflate(R.layout.bottom_sheet_layout, null); dialog.setContentView(bottomView); bottomView.findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); getPicFromCamera(); } }); bottomView.findViewById(R.id.choose_photo).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); getPicFromAlbm(); } }); bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); } }); dialog.show(); } private void cropPhoto(Uri uri) { Uri contentUri = Uri.fromFile(new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), System.currentTimeMillis() + ".jpg")); Intent intent = new Intent("com.android.camera.action.CROP"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //Android 7.0需要临时添加读取Url的权限, 添加此属性是为了解决:调用裁剪框时候提示:图片无法加载或者加载图片失败或者无法加载此图片 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true");//发送裁剪信号,去掉也能进行裁剪 intent.putExtra("scale", true);// 设置缩放 intent.putExtra("scaleUpIfNeeded", true);// 去黑边 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); //上述两个属性控制裁剪框的缩放比例。 //当用户用手拉伸裁剪框时候,裁剪框会按照上述比例缩放。 intent.putExtra("outputX", 300);//属性控制裁剪完毕,保存的图片的大小格式。 intent.putExtra("outputY", 300);//你按照1:1的比例来裁剪的,如果最后成像是800*400,那么按照2:1的样式保存, intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//输出裁剪文件的格式 intent.putExtra("return-data", true);//是否返回裁剪后图片的Bitmap intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);//设置输出路径 startActivityForResult(intent, CROP_REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (requestCode == CAMERA_REQUEST_CODE) { if (resultCode == RESULT_OK) { //用相机返回的照片去调用剪裁也需要对Uri进行处理 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { Uri contentUri = FileProvider.getUriForFile(AddStudentActivity.this, this.getPackageName() + ".fileprovider", tempFile); cropPhoto(contentUri); } else { cropPhoto(Uri.fromFile(tempFile)); } } } else if (requestCode == ALBUM_REQUEST_CODE) { if (resultCode == RESULT_OK) { Uri uri = intent.getData(); cropPhoto(uri); } } else if (requestCode == CROP_REQUEST_CODE) { if (intent == null) { return; } Bundle bundle = intent.getExtras(); if (bundle != null) { //在这里获得了剪裁后的Bitmap对象,可以用于上传 Bitmap image = bundle.getParcelable("data"); //设置到ImageView上 //也可以进行一些保存、压缩等操作后上传 File file = saveImage("head_output", image); uploadAvatar(file); // Log.d("dsadsadsa",path); } } } private void uploadAvatar(File file) { RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(this, 45)); RequestOptions options = RequestOptions.bitmapTransform(roundedCorners); Glide.with(this).load(file).apply(options).into(iv_avatar); NetWorks.uploadAvatar(file, new Observer>>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseResult> responseBody) { if (responseBody.getData() != null && responseBody.getCode() == 200) { path = responseBody.getData().get("imageUrl"); } } @Override public void onError(Throwable e) { e.toString(); } @Override public void onComplete() { } }); } public File saveImage(String name, Bitmap bmp) { File appDir = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES).getPath()); if (!appDir.exists()) { appDir.mkdir(); } String fileName = name + ".jpg"; File file = new File(appDir, fileName); try { FileOutputStream fos = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); return file; } catch (IOException e) { Log.d("dsadsadsa", e.getLocalizedMessage()); e.printStackTrace(); } return null; } private void getPicFromCamera() { //用于保存调用相机拍照后所生成的文件 tempFile = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), System.currentTimeMillis() + ".jpg"); //跳转到调用系统相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //判断版本 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //如果在Android7.0以上,使用FileProvider获取Uri intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(AddStudentActivity.this, this.getPackageName() + ".fileprovider", tempFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri); } else { //否则使用Uri.fromFile(file)方法获取Uri intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile)); } startActivityForResult(intent, CAMERA_REQUEST_CODE); } /** * 从相册获取图片 */ private void getPicFromAlbm() { Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, ALBUM_REQUEST_CODE); } }