package com.siso.app.ui; import java.io.Serializable; import org.apache.http.Header; import com.google.gson.Gson; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; import com.siso.app.common.Constants; import com.siso.app.common.URLs; import com.siso.app.entity.DataJson; import com.siso.app.entity.UserEntity; import com.siso.app.ui.common.BaseActionBarActivity; import com.siso.app.utils.QiniuUploadUitls; import com.siso.app.utils.QiniuUploadUitls.QiniuUploadUitlsListener; import com.siso.app.widget.ChoosePicDialog; import com.siso.app.widget.ChoosePicDialog.ChoosePicListener; import com.siso.app.widget.CircleImageView; import com.squareup.picasso.Picasso; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class UserDetailActivity extends BaseActionBarActivity { private UserEntity userEntity; private TextView userNameTextView; private CircleImageView userAvatar; private ChoosePicDialog choosePicDialog; private final int CROP_REQUEST_CODE = 2; public final static int RESULT_EDIT = 13; private Bitmap avatar; private LinearLayout userGoods; private LinearLayout userShare; private LinearLayout likeView; private ImageView sex; private TextView userSchool; private TextView goodsTextView; private TextView shareTextView; private TextView findTextView; private TextView likeTextView; private String userId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_detail); initToolbar(getStringByRId(R.string.title_activity_user_detail)); toolbar.setBackgroundColor(Color.TRANSPARENT); initQiniuToken(); initView(); } private void initQiniuToken(){ MarketPubActivity.qiniuToken = null; networkHelper.getNetString(URLs.QINIU_TOKEN, new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { MarketPubActivity.qiniuToken = new String(responseBody); } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { } }); } private void initView() { userNameTextView = (TextView)findViewById(R.id.user_detail_name); userAvatar = (CircleImageView)findViewById(R.id.user_detail_avatar); userGoods = (LinearLayout)findViewById(R.id.userdetail_goods); userShare = (LinearLayout)findViewById(R.id.userdetail_share); likeView = (LinearLayout)findViewById(R.id.userdetail_like); goodsTextView = (TextView)findViewById(R.id.userdetail_goods_text); shareTextView = (TextView)findViewById(R.id.userdetail_share_text); findTextView = (TextView)findViewById(R.id.userdetail_find_text); likeTextView = (TextView)findViewById(R.id.userdetail_like_text); sex = (ImageView)findViewById(R.id.sex); userSchool = (TextView)findViewById(R.id.userdetail_school); choosePicDialog = new ChoosePicDialog(this, R.style.ForwardDialog, R.layout.choose_pic_dialog); userAvatar.setOnClickListener(this); userGoods.setOnClickListener(this); userShare.setOnClickListener(this); likeView.setOnClickListener(this); choosePicDialog.setOnClickListener(new ChoosePicListener() { @Override public void startChooseActivity(int choose) { choosePicDialog.dismiss(); if (choose==Constants.TAKEPHOTO) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, Constants.TAKEPHOTO); }else if(choose==Constants.CHOOSE_PIC) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, Constants.TAKEPHOTO); } } }); userId = getIntent().getExtras().getString("userId"); getNetData(userId); } private void getNetData(String userId) { loadingProgressDialog.show(); RequestParams params = new RequestParams(); String url = URLs.USERINFO_GENER; if(userId.equals("")){ userId = MyApplication.userInfo[1]; params.add("authCode", MyApplication.userInfo[0]); url = URLs.USERINFO; isMenuOpen = true; }else { params.add("code", "code"); if(!userId.equals(MyApplication.userInfo[1])){ goodsTextView.setText(getStringByRId(R.string.other_goods)); shareTextView.setText(getStringByRId(R.string.other_share)); findTextView.setText(getStringByRId(R.string.other_find)); likeTextView.setText(getStringByRId(R.string.other_like)); } } params.add("userId", userId); Log.i("tag", "url=="+url); networkHelper.getNetJson(url, params, new AsyncHttpResponseHandler(){ @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { Gson gson = new Gson(); DataJson dataJson = gson.fromJson(new String(responseBody), DataJson.class); if (dataJson.isSuccess()) { userEntity = gson.fromJson(gson.toJson(dataJson.getData()), UserEntity.class); if(userEntity!=null){ setUserMsg(); }else { showButtomToast(getStringByRId(R.string.getUserInfo_fail)); finish(); } }else { loadingProgressDialog.dismiss(); showButtomToast(getStringByRId(R.string.account_error)); // finish(); } } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { loadingProgressDialog.dismiss(); showButtomToast(getStringByRId(R.string.timeoutError)); } }); } private void setUserMsg(){ loadingProgressDialog.dismiss(); userNameTextView.setText(userEntity.getUserName()); if(userEntity.getSex()==0) sex.setImageDrawable(getResources().getDrawable(R.drawable.ic_sex_boy)); else if(userEntity.getSex()==1) sex.setImageDrawable(getResources().getDrawable(R.drawable.ic_sex_girl)); else sex.setImageDrawable(getResources().getDrawable(R.drawable.privary_sex)); userSchool.setText(userEntity.getSchoolName()); Picasso picasso = Picasso.with(userAvatar.getContext()); picasso.load(userEntity.getAvatarUrl()).placeholder(R.drawable.ic_avatar).into(userAvatar); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.user_detail_avatar: choosePicDialog.show(); break; case R.id.userdetail_goods: startMyActivity(UserPubGoodsActivity.class,"userGoods"); break; case R.id.userdetail_share: startMyActivity(UserPubGoodsActivity.class,"userShare"); break; case R.id.userdetail_like: startMyActivity(UserPubGoodsActivity.class,"like"); break; default: break; } } private <T> void startMyActivity(Class<T> activityClass,String type){ if(MyApplication.userInfo!=null){ Intent intent = new Intent(this,activityClass); intent.putExtra("type", type); if(userId.equals("")) intent.putExtra("isMe", true); else intent.putExtra("isMe", false); intent.putExtra("otherUserId", userEntity.getId()); startActivity(intent); }else { showButtomToast(getStringByRId(R.string.has_no_login)); } } boolean isMenuOpen = false; @Override public boolean onCreateOptionsMenu(Menu menu) { if (isMenuOpen) getMenuInflater().inflate(R.menu.user_detail, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.user_detail_edit: Intent intent = new Intent(this,UserDetailEditActivity.class); intent.putExtra("userEntity", (Serializable)userEntity); startActivityForResult(intent, RESULT_EDIT); return true; default: return super.onOptionsItemSelected(item); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case RESULT_EDIT: getNetData(""); break; case Constants.CHOOSE_PIC: cropImage(data.getData()); break; case Constants.TAKEPHOTO: cropImage(data.getData()); break; case CROP_REQUEST_CODE: if(data!=null) { avatar = data.getExtras().getParcelable("data"); upLoadImage(); } break; default: break; } } } /** * * @author Owater * @createtime 2015-5-7 下午8:12:37 * @Decription 上传头像 * * @param bitmap */ private void upLoadImage(){ if(MarketPubActivity.qiniuToken==null){ showButtomToast(getStringByRId(R.string.tip_qiniutoken_error)); return; } loadingProgressDialog.show(); QiniuUploadUitls.getInstance().uploadImage(avatar,new QiniuUploadUitlsListener(){ @Override public void onSucess(String fileUrl) { UserEntity userEntity = new UserEntity(); userEntity.setId(MyApplication.userInfo[1]); userEntity.setAuthCode(MyApplication.userInfo[0]); userEntity.setAvatarUrl(fileUrl); networkHelper.postData(URLs.USER_AVATAR, userEntity); showButtomToast(getStringByRId(R.string.userdetail_avatar_change)); } @Override public void onError(int errorCode, String msg) { loadingProgressDialog.dismiss(); } @Override public void onProgress(final int progress) { runOnUiThread(new Runnable() { public void run() { loadingProgressDialog.setMessage("正在上传... "+progress+"%"); } }); } }); } @Override public void onRequestSuccess(String response) { super.onRequestSuccess(response); if(avatar!=null) userAvatar.setImageBitmap(avatar); } private void cropImage(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, CROP_REQUEST_CODE); } }