安卓开发之头像的修改与拍照
来源:互联网 发布:英文翻译软件哪个最好 编辑:程序博客网 时间:2024/05/16 06:21
个人信息页面
弹窗页面
图库选择之后
拍照之后
1.个人信息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:layout_height="match_parent" android:background="@color/white" android:orientation="vertical"> <ImageView android:id="@+id/iv_back" android:layout_width="25dp" android:layout_height="25dp" android:layout_marginLeft="16dp" android:layout_marginTop="9dp" android:src="@drawable/back" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:text="个人信息" android:textColor="#080808" android:textSize="24sp" /> <RelativeLayout android:id="@+id/rl_head" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="60dp" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="26dp" android:text="头像" android:textColor="@color/black" android:textSize="16sp" /> <TextView android:id="@+id/tv_tip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="26dp" android:text="未设置" android:textColor="@color/Qblue" android:textSize="14dp" /> </LinearLayout> <ImageView android:id="@+id/iv_head" android:layout_width="36dp" android:layout_height="36dp" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:src="@drawable/me" /> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="0.1dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:background="@color/view_color" /> <RelativeLayout android:id="@+id/rl_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="26dp" android:text="昵称" android:textColor="@color/black" android:textSize="16sp" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="26dp" android:text="未设置" android:textColor="@color/Qblue" android:textSize="14dp" /> </LinearLayout> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:src="@drawable/in" /> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="0.1dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:background="@color/view_color" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="26dp" android:text="我的等级" android:textColor="@color/black" android:textSize="16sp" /> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:src="@drawable/in" /> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="0.1dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="20dp" android:background="@color/view_color" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="26dp" android:text="我的积分" android:textColor="@color/black" android:textSize="16sp" /> <ImageView android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:src="@drawable/in" /> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="0.1dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="20dp" android:background="@color/view_color" /></LinearLayout>弹窗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:layout_height="match_parent" android:background="#e0e0e0" android:orientation="vertical"> <TextView android:id="@+id/tv_camera" android:layout_width="match_parent" android:layout_height="42dp" android:background="@color/white" android:gravity="center" android:text="拍照" android:textColor="@color/black" android:textSize="16sp" /> <View android:layout_width="match_parent" android:layout_height="0.1dp" android:background="@color/view_color" /> <TextView android:id="@+id/tv_chose" android:layout_width="match_parent" android:layout_height="42dp" android:background="@color/white" android:gravity="center" android:text="从手机相册选择" android:textColor="@color/black" android:textSize="16sp" /> <TextView android:id="@+id/tv_cancle" android:layout_width="match_parent" android:layout_height="42dp" android:layout_marginTop="8dp" android:background="@color/white" android:gravity="center" android:text="取消" android:textColor="@color/Qblue" android:textSize="16sp" /></LinearLayout>2.java代码
package com.fb.hckjfb.activity;import android.app.Dialog;import android.content.ContentResolver;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.util.Log;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import com.fb.hckjfb.R;import com.fb.hckjfb.RoundTools;import java.io.FileNotFoundException;import java.io.IOException;/** * 个人信息 */public class MeActivity extends BaseActivity implements View.OnClickListener { private ImageView iv_back, iv_head; private RelativeLayout rl_name, rl_head; private int SELECT_PICTURE = 0x00; private int SELECT_CAMER = 0x01; private Bitmap bitmap; private RoundTools roundTools; private Dialog bottomDialog; private TextView tv_tip, tv_name; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_me); initView(); //获取从上个页面传来的昵称并显示本页 Intent intent = getIntent(); String name = intent.getStringExtra("name"); } @Override protected int getLayoutID() { return R.layout.activity_me; } @Override protected void initListener() { } @Override protected void initView() { iv_back = findViewById(R.id.iv_back); rl_name = findViewById(R.id.rl_name); rl_head = findViewById(R.id.rl_head); iv_head = findViewById(R.id.iv_head); tv_tip = findViewById(R.id.tv_tip); tv_name = findViewById(R.id.tv_name); iv_back.setOnClickListener(this); rl_name.setOnClickListener(this); rl_head.setOnClickListener(this); } @Override protected void initData() { } @Override public void onClick(View view) { switch (view.getId()) { case R.id.iv_back: finish(); break; case R.id.rl_name: String name = tv_name.getText().toString(); intent = new Intent(this, SetNameActivity.class); startActivity(intent); break; case R.id.rl_head: //选择对话框 bottomDialog = new Dialog(this, R.style.BottomDialog); View contentView = LayoutInflater.from(this).inflate(R.layout.dialog_content_normal, null); //获取Dialog的监听 TextView tv_camera = (TextView) contentView.findViewById(R.id.tv_camera); TextView tv_chose = (TextView) contentView.findViewById(R.id.tv_chose); TextView tv_cancle = (TextView) contentView.findViewById(R.id.tv_cancle); tv_camera.setOnClickListener(this); tv_chose.setOnClickListener(this); tv_cancle.setOnClickListener(this); bottomDialog.setContentView(contentView); ViewGroup.LayoutParams layoutParams = contentView.getLayoutParams(); layoutParams.width = getResources().getDisplayMetrics().widthPixels; contentView.setLayoutParams(layoutParams); bottomDialog.getWindow().setGravity(Gravity.BOTTOM);//弹窗位置 bottomDialog.getWindow().setWindowAnimations(R.style.BottomDialog_Animation);//弹窗样式 bottomDialog.show();//显示弹窗 break; case R.id.tv_camera://自定义Doalog的点击事件 //通过相机拍摄照片 Intent intentCamer = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intentCamer, SELECT_CAMER); bottomDialog.dismiss();//取消弹窗 //设置头像后提示字体不显示 tv_tip.setText(""); break; case R.id.tv_chose: //通过相册选择图片 intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(intent.createChooser(intent, "选择图片"), SELECT_PICTURE); bottomDialog.dismiss();//取消弹窗 //设置头像后提示字体不显示 tv_tip.setText(""); break; case R.id.tv_cancle: bottomDialog.dismiss(); //取消弹窗 break; default: break; } } /** * 返回结果处理 * * @param requestCode 请求代码 * @param resultCode 结果代码 * @param data 返回数据 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == SELECT_PICTURE) { Log.i(TAG, "相册"); handle(resultCode, data); roundTools = new RoundTools(); Bitmap roundAlbum = roundTools.toRoundBitmap(bitmap); iv_head.setImageBitmap(roundAlbum); } else if (requestCode == SELECT_CAMER) { Log.i(TAG, "相机"); if (data.getData() == null) { bitmap = (Bitmap) data.getExtras().get("data"); Log.i(TAG, "BitData " + bitmap); roundTools = new RoundTools(); Bitmap roundCamer = roundTools.toRoundBitmap(bitmap); iv_head.setImageBitmap(roundCamer); } else try { bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData()); if (bitmap != bitmap) {//主要是防止handle处理出错,就会将先前获取相册的照片show出来 iv_head.setImageBitmap(bitmap); } } catch (IOException e) { e.printStackTrace(); } } } /** * 数据处理 共同点提取 * * @param resultCode * @param data */ private void handle(int resultCode, Intent data) { if (resultCode == RESULT_OK) {//结果代码是Ok的 Uri uri = data.getData(); if (uri != null && data.getData() != null) { Log.i(TAG, "uri 和 data.getData()不为空"); ContentResolver contentResolver = this.getContentResolver(); if (bitmap != null) { bitmap.recycle(); } try { bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri));//出错 } catch (FileNotFoundException e) { e.printStackTrace(); } } else { Log.i(TAG, "uri为空或者data为空 " + "数据:" + data.getData() + " uri: " + uri); } } }}3.style弹窗样式
<!--底部弹窗样式--> <style name="BottomDialog" parent="@style/Base.V7.Theme.AppCompat.Light.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style> <style name="BottomDialog.Animation" parent="Animation.AppCompat.Dialog"> <item name="android:windowEnterAnimation">@anim/translate_dialog_in</item> <item name="android:windowExitAnimation">@anim/translate_dialog_out</item> </style>
anim进出效果
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromXDelta="0" android:fromYDelta="100%" android:toXDelta="0" android:toYDelta="0"></translate>
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="0" android:toYDelta="100%"></translate>
4.最后别忘记添加权限
<!-- 相机权限 --> <uses-permission android:name="android.permission.CAMERA" /> <!-- 读写SD卡权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
阅读全文
0 0
- 安卓开发之头像的修改与拍照
- 安卓开发-拍照或相册选择头像和运行时动态获取权限
- ionic开发之用户头像修改-图片选择与上传
- 解决安卓7.0拍照更换头像重启的问题(主要针对华为手机)
- 安卓开发之自定义View------> 圆形头像ImageView
- 安卓头像.本地获取图片和拍照
- 安卓手机拍照,从相册选择,上传头像
- android拍照裁剪修改头像
- 安卓开发:使用手机拍照功能
- 安卓 多媒体之视频,拍照
- 安卓圆形头像的画法
- 安卓头像更换,调用系统相机,或从相册修改头像
- 安卓开发之Fragment的使用与通信
- 安卓头像设置
- 安卓上传头像
- 安卓上传头像
- 安卓开发:仿微博自定义带进度条和vip标识功能的圆形头像IdentityImageView
- Android开发之头像上传(包含拍照,从相册选择图片,裁剪等)
- 确定字符互异
- 分布式 Paxos和Fast Paxos算法
- UDP
- 常见JVM异常报错解决方案
- 织梦文章描述长度的修改方法
- 安卓开发之头像的修改与拍照
- hive的命令
- 初始化加载spqrk遇到Caused by: java.lang.OutOfMemoryError: PermGen space
- 数据结构实验之查找三:树的种类统计---(查找树做法与map做法)
- centos 自动分配ip
- Java网络编程
- 蓝桥杯 基础练习 01字串
- 数据结构第五周项目- 后缀表达式
- XTU1178 Rectangle--判断矩形是否相交