日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

[转]5分钟实现Android中更换头像功能

發布時間:2023/12/4 Android 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]5分钟实现Android中更换头像功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

5分鐘實現Android中更換頭像功能

?

?

?

寫在前面:

?

更換頭像這個功能在用戶界面幾乎是100%出現的。通過拍攝照片或者調用圖庫中的圖片,并且進行剪裁,來進行頭像的設置。

?

功能相關截圖如下:

?

?

?

?

?

下面我們直接看看完整吧:

?

public class UserActivity extends BaseActivity implements OnClickListener {private ImageView iv_photo;private Bitmap head;// 頭像Bitmapprivate static String path = "/sdcard/myHead/";// sd路徑@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();initListener();}private void initView() {setContentView(R.layout.activity_user);iv_photo = (ImageView) findViewById(R.id.iv_photo);Bitmap bt = BitmapFactory.decodeFile(path + "head.jpg");// 從SD卡中找頭像,轉換成Bitmapif (bt != null) {@SuppressWarnings("deprecation")Drawable drawable = new BitmapDrawable(bt);// 轉換成drawableiv_photo.setImageDrawable(drawable);} else {/*** 如果SD里面沒有則需要從服務器取頭像,取回來的頭像再保存在SD中* */}}private void initListener() {iv_photo.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.iv_photo:// 更換頭像showTypeDialog();break;}}private void showTypeDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);final AlertDialog dialog = builder.create();View view = View.inflate(this, R.layout.dialog_select_photo, null);TextView tv_select_gallery = (TextView) view.findViewById(R.id.tv_select_gallery);TextView tv_select_camera = (TextView) view.findViewById(R.id.tv_select_camera);tv_select_gallery.setOnClickListener(new OnClickListener() {// 在相冊中選取@Overridepublic void onClick(View v) {Intent intent1 = new Intent(Intent.ACTION_PICK, null);intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");startActivityForResult(intent1, 1);dialog.dismiss();}});tv_select_camera.setOnClickListener(new OnClickListener() {// 調用照相機@Overridepublic void onClick(View v) {Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent2.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "head.jpg")));startActivityForResult(intent2, 2);// 采用ForResult打開dialog.dismiss();}});dialog.setView(view);dialog.show();}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case 1:if (resultCode == RESULT_OK) {cropPhoto(data.getData());// 裁剪圖片}break;case 2:if (resultCode == RESULT_OK) {File temp = new File(Environment.getExternalStorageDirectory() + "/head.jpg");cropPhoto(Uri.fromFile(temp));// 裁剪圖片}break;case 3:if (data != null) {Bundle extras = data.getExtras();head = extras.getParcelable("data");if (head != null) {/*** 上傳服務器代碼*/setPicToView(head);// 保存在SD卡中iv_photo.setImageBitmap(head);// 用ImageView顯示出來}}break;default:break;}super.onActivityResult(requestCode, resultCode, data);}/*** 調用系統的裁剪功能* * @param uri*/public void cropPhoto(Uri uri) {Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");// aspectX aspectY 是寬高的比例intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// outputX outputY 是裁剪圖片寬高intent.putExtra("outputX", 150);intent.putExtra("outputY", 150);intent.putExtra("return-data", true);startActivityForResult(intent, 3);}private void setPicToView(Bitmap mBitmap) {String sdStatus = Environment.getExternalStorageState();if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 檢測sd是否可用return;}FileOutputStream b = null;File file = new File(path);file.mkdirs();// 創建文件夾String fileName = path + "head.jpg";// 圖片名字try {b = new FileOutputStream(fileName);mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把數據寫入文件} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {// 關閉流b.flush();b.close();} catch (IOException e) {e.printStackTrace();}}} }

?

代碼的注釋還算全面,大家可以一試~這樣一個更換頭像的功能就實現了。


---------------------
作者:MeloDev
來源:CSDN
原文:https://blog.csdn.net/MeloDev/article/details/51477369
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的[转]5分钟实现Android中更换头像功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。