团队博客-第二阶段冲刺-Day10
今天将安卓端的功能基本实现:
效果展示:



今天涉及的代码:
package com.transform.transformMine.fragment.other; import static android.app.Activity.RESULT_OK; import static com.xuexiang.xui.XUI.getContext; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.provider.MediaStore; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.transform.transformMine.R; import com.transform.transformMine.core.BaseFragment; import com.transform.transformMine.databinding.FragmentTransBinding; import com.xuexiang.xpage.annotation.Page; import com.xuexiang.xpage.enums.CoreAnim; import com.xuexiang.xui.widget.imageview.crop.CropImageView; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; @Page(anim = CoreAnim.none) public class TransFragment extends BaseFragment<FragmentTransBinding> implements View.OnClickListener { CropImageView cropImageView ; public static final int REQUEST_CODE_PICK_IMAGE = 1; @NonNull @Override protected FragmentTransBinding viewBindingInflate(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, boolean attachToRoot) { return FragmentTransBinding.inflate(inflater, container, attachToRoot); } @Override protected void initViews() { cropImageView = findViewById(R.id.crop_image_view); } @Override protected void initListeners() { binding.btnUpload.setOnClickListener(this); } @SuppressLint("IntentReset") @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.btn_upload){ // // 创建Intent对象 // @SuppressLint("IntentReset") Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // // 设置要选择的文件类型 // intent.setType("image/*"); // // 开启选择器 // startActivityForResult(Intent.createChooser(intent, "选择图片"), REQUEST_CODE_PICK_IMAGE); Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE); } } @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_CODE_PICK_IMAGE: if (resultCode == RESULT_OK) { // if (data != null) { // 得到图片的全路径 Uri uri = data.getData(); Bitmap bitmap1 = null; try { Bitmap bitmap = BitmapFactory.decodeStream(getContext().getContentResolver().openInputStream(uri)); bitmap1 = compressByJpeg(bitmap,50); } catch (FileNotFoundException e) { e.printStackTrace(); } cropImageView.setImageBitmap(bitmap1); String imagePath = uri.getPath(); // 调用目标方法进行处理 processImage(imagePath); } } break; } } //压缩图片的代码,quality是压缩的百分比,填1-100代表1%到100% private Bitmap compressByJpeg(Bitmap bitmap, int quality) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream); byte[] byteArray = outputStream.toByteArray(); return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); } }