美文网首页
点击按钮弹出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然后拍照+相册选取+剪裁图片

    1.要用普通的图片的话就设置成简单的ImageView 圆形图片的话就先导入一个依赖 : implementati...

  • 从相册选取图片,显示在按钮上

    需求:点击按钮,弹出ActionSheet提示框,可选择从相册中选取图片或者拍照,选择成功后的照片显示在按钮上 1...

  • 2018-05-27

    头像选取的两种方式 拍照和系统相册选取 点击用户头像,弹出选择框,让用户选择 拍照选取 还是相册选取。 下面的代码...

  • swift 实现拍照 选择相册

    //点击按钮的方法 /// 屏幕底部弹出的Alert // 去拍照 /// 去相册 //代理

  • UIImagePickerController

    效果 有一个头像按钮,点击进入相册,从相册中获取图片,更改按钮的图片为选取的图片 创建一个自定义UIButton按...

  • 拍照识别

    使用步骤 1.进入程序选择物体类型。 2.点击拍照或者点击相册进行图片选择。 3.对图片进行剪裁,剪掉与物体无关的...

  • ios自定义照相机

    由于项目里面需要对拍照后的图片进行编辑,当点击拍照后,拍照按钮变成编辑按钮,然后点击编辑,跳入图片编辑器。系统的照...

  • UIImagePickerController—打开系统相册和相

    效果:点击中间的图片按钮会提示打开相机或相册,点击相应照片可以编辑需要显示的内容大小,然后更换刚才图片按钮的图片

  • 点击添加图片

    点击加号按钮添加图片 实现思路:我的做法是用UICollectionView,点击后跳到手机相册或者拍照,将选中的...

  • 解决小米6 系统调用相册或者拍照后无法剪裁的问题

    项目在其他手机运行正常,在小米6 上出现了问题,从系统相册或者拍照后对图片进行剪裁,导致相片无法剪裁,此时按剪裁或...

网友评论

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

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