1.activity_main.xml先对界面进行布局:
先上图:
<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:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center"
>
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/ImageView01"
android:scaleType="centerCrop"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@mipmap/tx"
app:riv_oval="true"
app:riv_corner_radius="100dp"
/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ImageView01"
android:layout_alignParentBottom="true"
android:layout_marginBottom="83dp"
android:text="拍照" />
</LinearLayout>
圆形头像框的RoundedImageView的使用:https://blog.csdn.net/hdhhd/article/details/100073735
MainActivity:
package youli.com.example.administrator.my_camera_demo;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import com.makeramen.roundedimageview.RoundedImageView;
import java.io.File;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private Button btn1;
private RoundedImageView image;
private File currentImageFile = null;
private Bitmap img;
private String path;
private File sdCardDir = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
btn1 = findViewById(R.id.button1); //拍照
image = findViewById(R.id.ImageView01); //显示照片
// img = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_background);
//
// image.setImageBitmap(img);
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录
}
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
File dir = new File(sdCardDir + "/LLWDCZ/lxd_ck/");
dir.mkdirs();
currentImageFile = new File(dir, "ck.jpg");
path = currentImageFile.getPath();
Log.e("QWE", path + "显示路径");
if (!currentImageFile.exists()) {
try {
currentImageFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
Intent it = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
it.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(currentImageFile));
startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
img = getBitemapFromFile(path);
image.setImageBitmap(img);
}
//根据路径来寻找图片并把图片转为Bitmap形式(重要)
@SuppressWarnings("deprecation")
public static Bitmap getBitemapFromFile(String fileName) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
opt.inSampleSize = 2;
try {
return BitmapFactory.decodeFile(fileName, opt);
} catch (Exception ex) {
return null;
}
}
}
最后别忘了权限:在AndroidManifest文件中加入:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name = "android.hardware.camera" />
<uses-feature android:name = "android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
OK,欢迎留言