美文网首页
点击按钮弹出PopupWord然后拍照+相册选取+剪裁图片

点击按钮弹出PopupWord然后拍照+相册选取+剪裁图片

作者: duwensheng | 来源:发表于2018-07-27 08:01 被阅读0次

    1.要用普通的图片的话就设置成简单的ImageView

    圆形图片的话就先导入一个依赖 : implementation 'de.hdodenhof:circleimageview:2.1.0'

    示例为圆形图片:

    一:main布局:

        xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:tools="http://schemas.android.com/tools"

        xmlns:app="http://schemas.android.com/apk/res-auto"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical"

        android:id="@+id/dage"

        tools:context=".MainActivity">

            android:layout_gravity="center"

            android:id="@+id/imageID"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content" />

            android:text="点一下,给你惊喜"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:id="@+id/but"/>

    PopupWoeder布局:

        android:orientation="vertical"

        xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"

        android:layout_height="match_parent">

            android:id="@+id/btn_02"

            android:layout_height="wrap_content"

            android:text="拍照"

            android:layout_width="match_parent" />

            android:id="@+id/btn_01"

            android:layout_height="wrap_content"

            android:text="相册"

            android:layout_width="match_parent" />

            android:id="@+id/btn_03"

            android:layout_height="wrap_content"

            android:text="取消"

            android:layout_width="match_parent" />

    Activity 代码:

    import android.content.Intent;

    import android.graphics.Bitmap;

    import android.graphics.Color;

    import android.graphics.drawable.ColorDrawable;

    import android.net.Uri;

    import android.os.Bundle;

    import android.os.Environment;

    import android.provider.MediaStore;

    import android.support.v7.app.AppCompatActivity;

    import android.view.Gravity;

    import android.view.LayoutInflater;

    import android.view.View;

    import android.view.ViewGroup;

    import android.widget.Button;

    import android.widget.LinearLayout;

    import android.widget.PopupWindow;

    import java.io.ByteArrayOutputStream;

    import java.io.File;

    import de.hdodenhof.circleimageview.CircleImageView;

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {

        private View view;

        private PopupWindow popupWindow;

        private Button button2;

        private Button button1;

        private Button button0;

        private CircleImageView imageID;

        private Button but;

        private LinearLayout dage;

        public static final int NONE = 0;

        public static final int PHOTOHRAPH = 1;// 拍照

        public static final int PHOTOZOOM = 2; // 缩放

        public static final int PHOTORESOULT = 3;// 结果

        public static final String IMAGE_UNSPECIFIED = "image/*";

      // ImageView imageView = null;

        @Override

        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            initView();

            initPopup();

        }

        private void initView() {

            imageID = findViewById(R.id.imageID);

            but = (Button) findViewById(R.id.but);

            dage=findViewById(R.id.dage);

            but.setOnClickListener(this);

        }

        @Override

        public void onClick(View v) {

            switch (v.getId()) {

                case R.id.but:

                    popupWindow.showAtLocation(dage, Gravity.BOTTOM, 0, 0);

                    break;

            }

        }

        private void initPopup() {

            view= LayoutInflater.from(this).inflate(R.layout.item,null);

            button0=view.findViewById(R.id.btn_01);

            button1=view.findViewById(R.id.btn_02);

            button2=view.findViewById(R.id.btn_03);

            popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);

            popupWindow.setOutsideTouchable(true);

            popupWindow.setFocusable(true);

            popupWindow.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FF6347")));

            button0.setOnClickListener(new View.OnClickListener(){

                @Override

                public void onClick(View v) {

                    Intent intent = new Intent(Intent.ACTION_PICK, null);

                    intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);

                    startActivityForResult(intent, PHOTOZOOM);

                    if (popupWindow.isShowing()) {

                      popupWindow.dismiss();

                    }

                }

            });

            button1.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")));

                    startActivityForResult(intent, PHOTOHRAPH);

                    if (popupWindow.isShowing()) {

                      popupWindow.dismiss();

                    }

                }

            });

            button2.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                    if (popupWindow.isShowing()) {

                        popupWindow.dismiss();

                    }

                }

            });

        }

        @Override

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            if (resultCode == NONE)

                return;

            // 拍照

            if (requestCode == PHOTOHRAPH) {

                //设置文件保存路径这里放在跟目录下

                File picture = new File(Environment.getExternalStorageDirectory() + "/temp.jpg");

                startPhotoZoom(Uri.fromFile(picture));

            }

            if (data == null)

                return;

            // 读取相册缩放图片

            if (requestCode == PHOTOZOOM) {

                startPhotoZoom(data.getData());

            }

            // 处理结果

            if (requestCode == PHOTORESOULT) {

                Bundle extras = data.getExtras();

                if (extras != null) {

                    Bitmap photo = extras.getParcelable("data");

                    ByteArrayOutputStream stream = new ByteArrayOutputStream();

                    photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0 - 100)压缩文件

                    imageID.setImageBitmap(photo);

                }

            }

            super.onActivityResult(requestCode, resultCode, data);

        }

        public void startPhotoZoom(Uri uri) {

            Intent intent = new Intent("com.android.camera.action.CROP");

            intent.setDataAndType(uri, IMAGE_UNSPECIFIED);

            intent.putExtra("crop", "true");

            // aspectX aspectY 是宽高的比例

            intent.putExtra("aspectX", 1);

            intent.putExtra("aspectY", 1);

            // outputX outputY 是裁剪图片宽高

            intent.putExtra("outputX", 100);

            intent.putExtra("outputY", 100);

            intent.putExtra("return-data", true);

            startActivityForResult(intent, PHOTORESOULT);

        }

    }

    相关文章

      网友评论

          本文标题:点击按钮弹出PopupWord然后拍照+相册选取+剪裁图片

          本文链接:https://www.haomeiwen.com/subject/esqwmftx.html