第二十七枪(Android设置头像上传功能实现)

在一般开发中上传图片作为头像的功能非常常见,下面我们研究下具体实现,代码很简单,大家可以直接拿来使用哦!

1.先看一下布局文件,很是丑陋:

<RelativeLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent" ><ImageViewandroid:id="@+id/image_header"android:layout_width="150dp"android:layout_height="150dp" /><Buttonandroid:id="@+id/btn_selectimage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/image_header"android:text="相册" /><Buttonandroid:id="@+id/btn_takephoto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/btn_selectimage"android:text="拍照" /></RelativeLayout>2.MainActivity.java:

package com.example.userphoto;import java.io.File;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {private static final int IMAGE_REQUEST_CODE = 0;private static final int CAMERA_REQUEST_CODE = 1;private static final int RESIZE_REQUEST_CODE = 2;private static final String IMAGE_FILE_NAME = "header.jpg";private ImageView mImageHeader;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setupViews();}private void setupViews() {mImageHeader = (ImageView) findViewById(R.id.image_header);final Button selectBtn1 = (Button) findViewById(R.id.btn_selectimage);final Button selectBtn2 = (Button) findViewById(R.id.btn_takephoto);selectBtn1.setOnClickListener(this);selectBtn2.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_selectimage:Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);galleryIntent.addCategory(Intent.CATEGORY_OPENABLE);galleryIntent.setType("image/*");//图片startActivityForResult(galleryIntent, IMAGE_REQUEST_CODE);break;case R.id.btn_takephoto:if (isSdcardExisting()) {Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");//拍照cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE);} else {Toast.makeText(v.getContext(), "请插入sd卡", Toast.LENGTH_LONG).show();}break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode != RESULT_OK) {return;} else {switch (requestCode) {case IMAGE_REQUEST_CODE:resizeImage(data.getData());break;case CAMERA_REQUEST_CODE:if (isSdcardExisting()) {resizeImage(getImageUri());} else {Toast.makeText(MainActivity.this, "未找到存储卡,,无法存储照片!",Toast.LENGTH_LONG).show();}break;case RESIZE_REQUEST_CODE:if (data != null) {showResizeImage(data);}break;}}super.onActivityResult(requestCode, resultCode, data);}private boolean isSdcardExisting() {//判断SD卡是否存在final String state = Environment.getExternalStorageState();if (state.equals(Environment.MEDIA_MOUNTED)) {return true;} else {return false;}}public void resizeImage(Uri uri) {//重塑图片大小Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");//可以裁剪intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);intent.putExtra("outputX", 150);intent.putExtra("outputY", 150);intent.putExtra("return-data", true);startActivityForResult(intent, RESIZE_REQUEST_CODE);}private void showResizeImage(Intent data) {//显示图片Bundle extras = data.getExtras();if (extras != null) {Bitmap photo = extras.getParcelable("data");Drawable drawable = new BitmapDrawable(photo);mImageHeader.setImageDrawable(drawable);}}private Uri getImageUri() {//获取路径return Uri.fromFile(new File(Environment.getExternalStorageDirectory(),IMAGE_FILE_NAME));}}3.运行实例就行了:

喜欢的朋友请点赞关注我!谢谢!

版权声明:本文为博主原创文章,未经博主允许不得转载。

将会错过更好的风景,保持一份平和,保持一份清醒。

第二十七枪(Android设置头像上传功能实现)

相关文章:

你感兴趣的文章:

标签云: