首先点击图片
弹出对话框
点击本地图片选中 截取
点击拍照,截取
-------------------------权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
之后是
-----------------------------------btn_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <Button android:id="@+id/btn_pai" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="拍照" /> <Button android:id="@+id/btn_xiangce" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="上传本地" /> </LinearLayout>
-------------------------------这个是main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" > <TextView android:text="头像" android:textSize="20sp" android:padding="10dp" android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content" /> <ImageView android:id="@+id/img_view" android:layout_width="300dp" android:layout_height="300dp" android:layout_gravity="center" android:src="@mipmap/ic_launcher" /> </LinearLayout>
-----------------------------最后主页面
import android.app.AlertDialog.Builder; import android.app.AlertDialog; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.io.File; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private ImageView img_view; private AlertDialog alertDialog; private Button btn_xiangce; private Button btn_pai; private String path = Environment.getExternalStorageDirectory() + "/head.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img_view = findViewById(R.id.img_view); img_view.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.img_view: createDialog(); break; case R.id.btn_pai: Intent PIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); PIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path))); startActivityForResult(PIntent, 100); alertDialog.dismiss(); break; case R.id.btn_xiangce: Intent XIntent = new Intent(Intent.ACTION_PICK); XIntent.setType("image/*"); startActivityForResult(XIntent, 99); alertDialog.dismiss(); break; default: break; } } private void createDialog() { // TODO Auto-generated method stub Builder builder = new AlertDialog.Builder(this); alertDialog = builder.create(); alertDialog.setTitle("请选择"); View dialogView = View.inflate(this, R.layout.btn_layout, null); alertDialog.setView(dialogView); btn_xiangce = (Button) dialogView.findViewById(R.id.btn_xiangce); btn_pai = (Button) dialogView.findViewById(R.id.btn_pai); btn_xiangce.setOnClickListener(this); btn_pai.setOnClickListener(this); alertDialog.show(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 99 && resultCode == this.RESULT_OK) { // 裁剪 crop(data.getData()); } if (requestCode == 89 && resultCode == this.RESULT_OK) { img_view.setImageBitmap((Bitmap) data.getParcelableExtra("data")); } if (requestCode == 100 && resultCode == this.RESULT_OK) { crop(Uri.fromFile(new File(path))); } } private void crop(Uri data) { // TODO Auto-generated method stub Intent cIntent = new Intent("com.android.camera.action.CROP"); cIntent.setDataAndType(data, "image/*"); cIntent.putExtra("crop", "true"); cIntent.putExtra("aspectX", 1); cIntent.putExtra("aspectY", 1); cIntent.putExtra("outputX", 249); cIntent.putExtra("outputY", 249); cIntent.putExtra("return-data", true); startActivityForResult(cIntent, 89); } }
在这里不要把包导错
import android.app.AlertDialog.Builder;
import android.app.AlertDialog;