package com.hjx.personalcenter.activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.v4.content.FileProvider; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.generic.GenericDraweeHierarchy; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.generic.RoundingParams; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.hjx.personalcenter.R; import com.hjx.personalcenter.customdialog.HeadDialog; import com.hjx.personalcenter.db.SaveParam; import com.hjx.personalcenter.http.HttpCode; import com.hjx.personalcenter.http.HttpManager; import com.hjx.personalcenter.interfaces.DialogCallBack; import com.hjx.personalcenter.model.PesonalInfo; import com.hjx.personalcenter.model.SignInfo; import com.hjx.personalcenter.util.AlertUtils; import com.hjx.personalcenter.util.CropUtils; import com.hjx.personalcenter.util.DialogPermission; import com.hjx.personalcenter.util.FileUtil; import com.hjx.personalcenter.util.PermissionUtil; import com.hjx.personalcenter.util.SharedPreferenceMark; import com.mylhyl.circledialog.CircleDialog; import com.mylhyl.circledialog.callback.ConfigInput; import com.mylhyl.circledialog.params.InputParams; import com.mylhyl.circledialog.view.listener.OnInputClickListener; import com.zaaach.toprightmenu.MenuItem; import com.zaaach.toprightmenu.TopRightMenu; import java.io.File; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener, DialogCallBack.CallBackView { private ImageView iv_imformatioan, iv_look_card, iv_setting, iv_sign, iv_sex; private TextView tv_edit_presoninfo, tv_sign, tv_username, tv_username1, tv_mygad, tv_sex, tv_useinfo_adress, tv_useinfo_birthday, tv_useinfo_qq, tv_useinfo_school, tv_useinfo_gender; private LinearLayout linel_mycuoti, linel_mynote, linel_mycollege, linel_myclass; private TopRightMenu mTopRightMenu; private boolean showIcon = true; private boolean dimBg = true; private boolean needAnim = true; private static final int REQUEST_CODE_TAKE_PHOTO = 1; private static final int REQUEST_CODE_ALBUM = 2; private static final int REQUEST_CODE_CROUP_PHOTO = 3; SimpleDraweeView mSimpleDraweeView; private File file; private Uri uri; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case HttpCode.GETINFO: PesonalInfo.DataBean cardinfoBean =(PesonalInfo.DataBean)msg.obj; tv_username.setText(cardinfoBean.getNickName()); tv_username1.setText(cardinfoBean.getNickName()); tv_useinfo_adress.setText(cardinfoBean.getRegion().getRegionName()); tv_useinfo_birthday.setText(cardinfoBean.getBirthday()); tv_useinfo_qq.setText(cardinfoBean.getQq()); tv_useinfo_school.setText(cardinfoBean.getSchool().getSchoolName()); tv_useinfo_gender.setText(cardinfoBean.getGrade().getGradeName()); String sex = cardinfoBean.getGender(); if ("0".equals(sex)){ tv_sex.setText("男"); iv_sex.setImageResource(R.mipmap.men); }else { tv_sex.setText("女"); iv_sex.setImageResource(R.mipmap.women); } break; case HttpCode.SIGN: SignInfo.DataBean dataBean = (SignInfo.DataBean)msg.obj; tv_sign.setText(dataBean.getSignature()); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Fresco.initialize(this); setContentView(R.layout.activity_main); initView(); initData(); initLister(); } private void initView() { iv_imformatioan = (ImageView) findViewById(R.id.iv_imformatioan); iv_look_card = (ImageView) findViewById(R.id.iv_look_card); tv_edit_presoninfo = (TextView) findViewById(R.id.tv_edit_presoninfo); iv_setting = (ImageView) findViewById(R.id.iv_setting); iv_sign = (ImageView) findViewById(R.id.iv_sign); tv_sign = (TextView) findViewById(R.id.tv_sign); //头像 mSimpleDraweeView = (SimpleDraweeView) findViewById(R.id.iv_head); //初始化个人信息 iv_sex = (ImageView) findViewById(R.id.iv_sex); tv_username = (TextView) findViewById(R.id.tv_username); tv_username1 = (TextView) findViewById(R.id.tv_username1); tv_mygad = (TextView) findViewById(R.id.tv_mygad); tv_sex = (TextView) findViewById(R.id.tv_sex); tv_useinfo_adress = (TextView) findViewById(R.id.tv_useinfo_adress); tv_useinfo_birthday = (TextView) findViewById(R.id.tv_useinfo_birthday); tv_useinfo_qq = (TextView) findViewById(R.id.tv_useinfo_qq); tv_useinfo_school = (TextView) findViewById(R.id.tv_useinfo_school); tv_useinfo_gender = (TextView) findViewById(R.id.tv_useinfo_gender); //跳转其他应用 linel_mycuoti = (LinearLayout) findViewById(R.id.linel_mycuoti); linel_mynote = (LinearLayout) findViewById(R.id.linel_mynote); linel_mycollege = (LinearLayout) findViewById(R.id.linel_mycollege); linel_myclass = (LinearLayout) findViewById(R.id.linel_myclass); } @Override protected void onResume() { super.onResume(); //获取个人信息 HttpManager.getInstance().getpresonalinfo(MainActivity.this,688,handler); //获取个性签名 HttpManager.getInstance().getsignatures(MainActivity.this,688,handler); } private void initData() { //加载个人信息 String xiongzuo = SaveParam.getInstance().getLoginParam(this,SaveParam.CONSTELLATION); if (xiongzuo==null){ tv_mygad.setText(""); }else { tv_mygad.setText(xiongzuo); } //HttpManager.getInstance().getpresonalinfo(MainActivity.this,688,handler); //初始化图片 file = new File(FileUtil.getCachePath(this), "user-avatar.jpg"); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { uri = Uri.fromFile(file); } else { //通过FileProvider创建一个content类型的Uri(android 7.0需要这样的方法跨应用访问) uri = FileProvider.getUriForFile(MyApplication.getContext(), "com.hjx.personalcenter", file); } } private void initLister() { iv_imformatioan.setOnClickListener(this); iv_look_card.setOnClickListener(this); tv_edit_presoninfo.setOnClickListener(this); iv_setting.setOnClickListener(this); iv_sign.setOnClickListener(this); mSimpleDraweeView.setOnClickListener(this); linel_mycuoti.setOnClickListener(this); linel_mynote.setOnClickListener(this); linel_mycollege.setOnClickListener(this); linel_myclass.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_imformatioan: Intent intent = new Intent(); intent.setClass(MainActivity.this, FeedBackActivity.class); startActivity(intent); overridePendingTransition(R.anim.rightin, R.anim.rightout); break; case R.id.iv_look_card: Intent lookintent = new Intent(); lookintent.setClass(MainActivity.this, ElectronicCardLookInfoActivity.class); startActivity(lookintent); overridePendingTransition(R.anim.rightin, R.anim.rightout); break; case R.id.tv_edit_presoninfo: Intent editintent = new Intent(); editintent.setClass(MainActivity.this, ChangePresonalInfoActivity.class); startActivity(editintent); overridePendingTransition(R.anim.rightin, R.anim.rightout); break; case R.id.iv_head: HeadDialog.getInstance(this).show(getSupportFragmentManager(), "HeadDialog"); break; case R.id.iv_setting: mTopRightMenu = new TopRightMenu(MainActivity.this); List menuItems = new ArrayList<>(); menuItems.add(new MenuItem(R.mipmap.blank, "切换账户")); menuItems.add(new MenuItem(R.mipmap.blank, "账户管理")); mTopRightMenu .setHeight(150) //默认高度480 .setWidth(320) //默认宽度wrap_content .showIcon(showIcon) //显示菜单图标,默认为true .dimBackground(dimBg) //背景变暗,默认为true .needAnimationStyle(needAnim) //显示动画,默认为true .setAnimationStyle(R.style.TRM_ANIM_STYLE) //默认为R.style.TRM_ANIM_STYLE .setOnMenuItemClickListener(new TopRightMenu.OnMenuItemClickListener() { @Override public void onMenuItemClick(int position) { switch (position) { case 0: //清除数据 Intent settingintent = new Intent(); settingintent.setClass(MainActivity.this, LoginAndRegisterActivity.class); startActivity(settingintent); overridePendingTransition(R.anim.rightin, R.anim.rightout); break; case 1: Intent accontMintent = new Intent(); accontMintent.setClass(MainActivity.this, AccountManagementActivity.class); startActivity(accontMintent); overridePendingTransition(R.anim.rightin, R.anim.rightout); break; } } }) .addMenuList(menuItems) .showAsDropDown(iv_setting, -250, 0); break; case R.id.iv_sign: new CircleDialog.Builder(this) .setCanceledOnTouchOutside(false) .setCancelable(true) .setTitle("个性签名") .setInputHint("请输入个性签名") .setWidth(0.5f) .configInput(new ConfigInput() { @Override public void onConfig(InputParams params) { // params.inputBackgroundResourceId = R.drawable.bg_input; } }) .setNegative("取消", null) .setPositiveInput("确定", new OnInputClickListener() { @Override public void onClick(String text, View v) { if (text.equals("")) { AlertUtils.showToast(MainActivity.this, "请输入个性签名"); } else { HttpManager.getInstance().changsignature(MainActivity.this,688,text); tv_sign.setText(text); } } }) .show(); break; case R.id.linel_mycuoti: AlertUtils.showToast(this, "hhahahah "); break; case R.id.linel_mynote: AlertUtils.showToast(this, "hhahahah "); break; case R.id.linel_mycollege: AlertUtils.showToast(this, "hhahahah "); break; case R.id.linel_myclass: AlertUtils.showToast(this, "hhahahah "); break; } } //回调头像监听 @Override public void heard(Context context, View v) { switch (v.getId()){ //选择默认图片 case R.id.oktakephone: AlertUtils.showToast(this, "您选择了默认图片 "); break; case R.id.canceltakephone: break; //拍摄和相册 case R.id.take_pic: if (PermissionUtil.hasCameraPermission(MainActivity.this)) { uploadAvatarFromPhotoRequest(); } break; case R.id.xiangce: uploadAvatarFromAlbumRequest(); break; } } //照相 private void uploadAvatarFromPhotoRequest() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(intent, REQUEST_CODE_TAKE_PHOTO); } //选择图库 private void uploadAvatarFromAlbumRequest() { Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, REQUEST_CODE_ALBUM); } //回掉 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != -1) { return; } if (requestCode == REQUEST_CODE_ALBUM && data != null) { Uri newUri; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { newUri = Uri.parse("file:///" + CropUtils.getPath(this, data.getData())); } else { newUri = data.getData(); } if (newUri != null) { startPhotoZoom(newUri); } else { Toast.makeText(this, "没有得到相册图片", Toast.LENGTH_LONG).show(); } } else if (requestCode == REQUEST_CODE_TAKE_PHOTO) { startPhotoZoom(uri); } else if (requestCode == REQUEST_CODE_CROUP_PHOTO) { uploadAvatarFromPhoto(); } } private void uploadAvatarFromPhoto() { compressAndUploadAvatar(file.getPath()); } private void compressAndUploadAvatar(String fileSrc) { //上传到服务器 final File cover = FileUtil.getSmallBitmap(this, fileSrc); String mimeType = "image/*"; //requestBody = RequestBody.create(MediaType.parse(mimeType), file); //String fileName = cover.getName(); //HttpManager.getInstance().header(this, fileSrc); //photo = MultipartBody.Part.createFormData("portrait", fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()), requestBody); //Fresco设置圆形头像 GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(getResources()); GenericDraweeHierarchy hierarchy = builder .setDesiredAspectRatio(1f) .setFailureImage(R.mipmap.blank) //圆形头像 .setRoundingParams(RoundingParams.asCircle()) .build(); //加载本地图片 Uri uri = Uri.fromFile(cover); DraweeController controller = Fresco.newDraweeControllerBuilder() .setOldController(mSimpleDraweeView.getController()) .setUri(uri) .build(); mSimpleDraweeView.setHierarchy(hierarchy); mSimpleDraweeView.setController(controller); } public void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.putExtra("crop", "true");// crop=true 有这句才能出来最后的裁剪页面. intent.putExtra("aspectX", 1);// 这两项为裁剪框的比例. intent.putExtra("aspectY", 1);// x:y=1:1 // intent.putExtra("outputX", 400);//图片输出大小 // intent.putExtra("outputY", 400); intent.putExtra("output", Uri.fromFile(file)); intent.putExtra("outputFormat", "JPEG");// 返回格式 startActivityForResult(intent, REQUEST_CODE_CROUP_PHOTO); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case PermissionUtil.REQUEST_SHOWCAMERA: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission Granted uploadAvatarFromPhotoRequest(); } else { if (!SharedPreferenceMark.getHasShowCamera()) { SharedPreferenceMark.setHasShowCamera(true); new DialogPermission(this, "关闭摄像头权限影响扫描功能"); } else { Toast.makeText(this, "未获取摄像头权限", Toast.LENGTH_SHORT) .show(); } } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } }