package com.partynetwork.iparty.ishare; import java.util.ArrayList; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.SparseArray; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.lidroid.xutils.util.LogUtils; import com.partynetwork.dataprovider.DataProvider.IJsonResultListener; import com.partynetwork.dataprovider.json.NetworkEntity; import com.partynetwork.dataprovider.json.struct.Ishare_setOperatingForIshareRequest; import com.partynetwork.dataprovider.json.struct.Ishare_setOperatingForIshareResponse; import com.partynetwork.dataprovider.json.struct.Ishare_setVoteForIshareRequest; import com.partynetwork.dataprovider.util.T; import com.partynetwork.iparty.R; import com.partynetwork.iparty.app.AppContext; import com.partynetwork.iparty.app.common.AccessTokenKeeper; import com.partynetwork.iparty.app.common.BitmapManager; import com.partynetwork.iparty.app.common.QQWeiboHelper; import com.partynetwork.iparty.app.common.RenRenHelper; import com.partynetwork.iparty.app.common.SinaWeiboHelper; import com.partynetwork.iparty.app.util.StringUtils; import com.partynetwork.iparty.helper.IntentHelper; import com.partynetwork.iparty.info.IshareInfo; import com.partynetwork.iparty.info.IsharePhotoInfo; import com.partynetwork.myui.CircleProgress; import com.partynetwork.myview.myimageview.CircularImage; import com.partynetwork.myview.mytoast.MenuBottomPop; import com.sina.weibo.sdk.exception.WeiboException; import com.sina.weibo.sdk.net.RequestListener; import com.tencent.weibo.sdk.android.model.ModelResult; import com.tencent.weibo.sdk.android.network.HttpCallback; public class IshareView extends RelativeLayout implements IJsonResultListener, OnClickListener { private TextView userName;// 发布人昵称 private CircularImage userHead;// 发布人头像url private TextView publishedTime;// 发布时间 private TextView publishedLocation;// 发布地点 private TextView eventContent;// 分享的文字介绍 private TextView eventTheme;// 主题的集合 private LinearLayout bodyLayout;// 发表的图片布局 private ImageView praiseImg;// 赞的图标 private TextView eventPraiseNumber;// 赞的人数 private TextView eventNumberOfComments;// 评论人数 private TextView eventShareNumber;// 分享人数 private Activity mActivity; private int position; /** * 存放当前可供点击的ImageView */ private List<ImageView> imageViewList = new ArrayList<ImageView>(); /** * 图片地址list */ private List<String> imageUrlList = new ArrayList<String>(); /** * 存放当前可供点击的CircleProgress */ private List<CircleProgress> circleProgressList = new ArrayList<CircleProgress>(); /** * 当前用户的选择 0:yes 1:no;-1 初始状态 */ private int userChoose = -1; private int oldPosition = -1; /** * 数据源 */ private IshareInfo info; /** * body体的宽度 */ private int layoutWidth; private String moreArray[] = new String[] { "举报不良信息" };// “更多”功能 private MenuBottomPop moreBottomPop;// “更多”底部弹出菜单 private String shareArray[] = new String[] { "分享到新浪微博", "分享到腾讯微博", "分享到人人" };// “分享”功能 private MenuBottomPop shareBottomPop;// “分享”底部弹出菜单 /** * 存放随机布局的列表 */ public SparseArray<List<Integer>> sparseList; private BitmapManager bitmapManager; // 需要分享的内容 private String shareContent; private List<String> shareImage; public IshareView(Activity activity, BitmapManager bitmapManager) { super(activity); View.inflate(activity, R.layout.ishare_item, this); this.bitmapManager = bitmapManager; this.mActivity = activity; init(); } /** * 初始化控件 */ private void init() { initView(); DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); sparseList = new SparseArray<List<Integer>>(); layoutWidth = dm.widthPixels - 16; moreBottomPop = new MenuBottomPop(mActivity, moreArray, moreClickListener); shareBottomPop = new MenuBottomPop(mActivity, shareArray, shareClickListener); shareImage = new ArrayList<String>(); } /** * 初始化控件 */ private void initView() { userName = (TextView) findViewById(R.id.item_head_name); userHead = (CircularImage) findViewById(R.id.item_head_photo); userHead.setOnClickListener(this);// 用户头像点击监听 publishedTime = (TextView) findViewById(R.id.item_head_time); publishedLocation = (TextView) findViewById(R.id.item_head_where); eventContent = (TextView) findViewById(R.id.item_content_tv); eventTheme = (TextView) findViewById(R.id.item_head_theme); bodyLayout = (LinearLayout) findViewById(R.id.item_middle); eventPraiseNumber = (TextView) findViewById(R.id.item_foot_praise_tv); praiseImg = (ImageView) findViewById(R.id.item_foot_praise_iv); findViewById(R.id.item_foot_praise).setOnClickListener(this);// 赞点击监听 eventNumberOfComments = (TextView) findViewById(R.id.item_foot_comment_tv); findViewById(R.id.item_foot_share_ll).setOnClickListener(this);// 分享点击监听 eventShareNumber = (TextView) findViewById(R.id.item_foot_share_tv); findViewById(R.id.item_more).setOnClickListener(this);// 更多点击监听 } /** * 设置事件响应 */ public void onClick(View view) { switch (view.getId()) { case R.id.item_head_photo: // 点击头像 IntentHelper.goPersonalCenterActivity(mActivity, info.getUserId()); break; case R.id.item_foot_praise: // 点击赞 if (info.getEventType() == 0) { praiseClick(); } break; case R.id.item_more: // 点击更多 moreBottomPop.showAtLocation(userName); break; case R.id.item_foot_share_ll: // 分享 shareBottomPop.showAtLocation(userName); break; default: break; } } /** * “更多”功能的监听 */ private OnClickListener moreClickListener = new OnClickListener() { public void onClick(View v) { if (v.getTag().equals(moreArray[0])) { Intent intent = new Intent(mActivity, IshareReportActivity.class); intent.putExtra(IshareReportActivity.CONTENT_ID, info.getIshareId()); intent.putExtra(IshareReportActivity.REPORT_EVENT_TYPE, 2); mActivity.startActivity(intent); } moreBottomPop.dismiss(); } }; /** * “分享”功能的监听 */ private OnClickListener shareClickListener = new OnClickListener() { private HttpCallback callBack = new HttpCallback() { @Override public void onResult(Object object) { ModelResult result = (ModelResult) object; if (result != null && result.isSuccess()) { T.showShort(mActivity, "分享成功"); } else { T.showShort(mActivity, "分享失败"); } } }; @Override public void onClick(View v) { if (v.getTag().equals(shareArray[0])) { // 分享到新浪微博 // T.showShort(mContext, "分享到新浪微博"); if (shareContent != null && shareImage != null && shareImage.size() > 0 && !StringUtils.isEmpty(shareImage.get(0))) { SinaWeiboHelper.shareMessage(mActivity, shareContent, shareImage, mListener); } else if (shareContent != null) { SinaWeiboHelper.shareMessage(mActivity, shareContent, null, mListener); } } else if (v.getTag().equals(shareArray[1])) { // 分享到腾讯微博 if (QQWeiboHelper.isAuth(mActivity)) { if (shareContent != null && shareImage != null && shareImage.size() > 0 && !StringUtils.isEmpty(shareImage.get(0))) { QQWeiboHelper.shareMessage(mActivity, shareContent, shareImage.get(0), callBack); } else if (shareContent != null) { QQWeiboHelper.shareMessage(mActivity, shareContent, null, callBack); } } else { QQWeiboHelper.auth(mActivity); } } else if (v.getTag().equals(shareArray[2])) { // 分享到人人 if (RenRenHelper.isAuth(mActivity)) { if (shareContent != null && shareImage != null && shareImage.size() > 0 && !StringUtils.isEmpty(shareImage.get(0))) { RenRenHelper.shareMessage(mActivity, shareContent, shareImage.get(0)); } else if (shareContent != null) { RenRenHelper .shareMessage(mActivity, shareContent, null); } } else { RenRenHelper.authorize(mActivity); } } shareBottomPop.dismiss(); } }; /** * 微博 OpenAPI 回调接口。 */ private RequestListener mListener = new RequestListener() { @Override public void onComplete(String response) { if (!TextUtils.isEmpty(response)) { if (response.startsWith("{\"statuses\"")) { // 调用 StatusList#parse 解析字符串成微博列表对象 } else if (response.startsWith("{\"created_at\"")) { // 调用 Status#parse 解析字符串成微博对象 T.showShort(mActivity, "分享成功"); } else { T.showShort(mActivity, response); } } } @Override public void onWeiboException(WeiboException e) { JSONObject jsonObject; try { jsonObject = new JSONObject(e.getMessage()); String error_code = jsonObject.optString("error_code"); if (error_code.equals("21332")) { AccessTokenKeeper.clear(mActivity); } } catch (JSONException e1) { e1.printStackTrace(); } T.showShort(mActivity, e.getMessage()); } }; /** * 赞的点击操作 */ private void praiseClick() { /********************************** 在这里发送赞的点击请求 */ AppContext context = (AppContext) mActivity.getApplicationContext(); Ishare_setOperatingForIshareRequest request = new Ishare_setOperatingForIshareRequest(); request.setIshareId(info.getIshareId()); request.setOperatingType(0); request.setUserId(context.getLoginUid()); context.getmDataProvider().getJsonFromNetwork(request, this); } /** * 初始化赞操作 */ private void initPraise() { if (info.getEventType() == 0) { if (info.getEventIsPraise() == 0) { praiseImg .setImageResource(R.drawable.ishare_item_praise_normal); } else { praiseImg .setImageResource(R.drawable.ishare_item_praise_pressed); } setEventPraiseNumber(info.getEventPraiseNumber()); } else { if (info.getEventIsVote() == -1) { praiseImg.setImageResource(R.drawable.ishare_item_vote_normal); } else { praiseImg.setImageResource(R.drawable.ishare_item_vote_pressed); } setEventPraiseNumber(info.getEventVoteNumber()); } } /** * 设置数据对象 * * @param info */ public void setInfo(IshareInfo info) { if (info == null) { return; } this.info = info; userChoose = info.getEventIsVote(); setUserName(info.getUserName()); setUserHead(info.getUserHeadUrl()); setPublishedTime(info.getPublishedTime()); setPublishedLocation(info.getPublishedLocation()); setEventContent(info.getEventContent()); setEventTheme(info.getEventThemeArray()); setEventBody(info.getEventBgArray()); setEventShareNumber(info.getEventShareNumber()); setEventPraiseNumber(info.getEventPraiseNumber()); setEventNumberOfComments(info.getEventNumberOfComments()); initPraise(); } /** * * @param pos */ public void setPosition(int pos) { this.position = pos; } private void setUserName(String userName) { this.userName.setText(userName); } private void setUserHead(String userHead) { bitmapManager.loadBitmap(userHead, this.userHead); } /** * @param publishedTime * 要设置的 publishedTime */ public void setPublishedTime(String publishedTime) { this.publishedTime.setText(publishedTime); } /** * 设置地址 * * @param publishedLocation */ private void setPublishedLocation(String publishedLocation) { if (publishedLocation.equals("")) { this.publishedLocation.setVisibility(View.GONE); } else { this.publishedLocation.setVisibility(View.VISIBLE); this.publishedLocation.setText(publishedLocation); } } private void setEventContent(String eventContent) { if (eventContent.equals("") || eventContent == null) { this.eventContent.setVisibility(View.GONE); } else { this.eventContent.setVisibility(View.VISIBLE); } shareContent = eventContent; this.eventContent.setText(eventContent); } private void setEventTheme(String[] eventThemeButton) { if (eventThemeButton == null || eventThemeButton[0].equals("")) { this.eventTheme.setVisibility(View.GONE); } else { this.eventTheme.setVisibility(View.VISIBLE); this.eventTheme.setText("#" + eventThemeButton[0]); } } /** * 生成显示主体部分 * * @param photoInfoArray */ private void setEventBody(IsharePhotoInfo[] photoInfoArray) { if(null==photoInfoArray){ return ; } // 清空body体 clearBody(); // 判断当前i分享的细类 if (info.getEventType() == 0) { // 随机生成布局 List<Integer> list = randomList(photoInfoArray); // 开始布局 addShareBody(photoInfoArray, list); } else if (info.getEventType() == 1) { addChooseBody(photoInfoArray); } } /** * 清空body体 */ private void clearBody() { this.bodyLayout.removeAllViews(); sparseList.clear(); circleProgressList.removeAll(circleProgressList); imageViewList.removeAll(imageViewList); imageUrlList.removeAll(imageUrlList); shareImage.removeAll(shareImage); } /** * 生成随机列表 * * @param size * 总图片数 * @return */ private List<Integer> randomList(IsharePhotoInfo[] photoInfoArray) { int size = photoInfoArray.length; List<Integer> list = new ArrayList<Integer>(); int sum = 0; if (sparseList.get(position) == null || sparseList.get(position).size() == 0) { while (sum < size) { int random = (int) (Math.random() * 2) + 1; sum += random; if (sum > size) { random = 1; } list.add(random); } } else { list = sparseList.get(position); } // 验证总数是否一致 sum = 0; for (Integer r : list) { sum += r; } if (size == sum) { // 数量一致则返回 sparseList.put(position, list); return list; } else { // 递归调用 return randomList(photoInfoArray); } } /** * 根据随机列表添加原i分享主体布局 * * @param list */ private void addShareBody(final IsharePhotoInfo[] photoInfoArray, List<Integer> list) { // 图片数量 int size = photoInfoArray.length; int z = 0; for (int i = 0; i < size; i++) { // 先把列表里的数字取出 if (z >= list.size()) { LogUtils.i("生成的随机数组有误!"); return; } int num = list.get(z); if (num == 1) { String string = photoInfoArray[i].getPhotoUrl(); shareImage.add(string); ImageView image = new ImageView(mActivity); image.setScaleType(ScaleType.CENTER_CROP); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( layoutWidth, 3 * layoutWidth / 4); lp.setMargins(0, 0, 0, 5); image.setLayoutParams(lp); image.setTag(i); bitmapManager.loadBitmap(string, image); // 设置监听 image.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Intent intent = new Intent(mActivity, ImageDetailsActivity.class); intent.putExtra(ImageDetailsActivity.IMAGE_ARRAY, photoInfoArray); intent.putExtra(ImageDetailsActivity.IMAGE_POSITION, Integer.parseInt(arg0.getTag().toString())); mActivity.startActivity(intent); } }); this.bodyLayout.addView(image); } else { LinearLayout linearLayout = new LinearLayout(mActivity); linearLayout.setOrientation(LinearLayout.HORIZONTAL); for (int j = 0; j < 2; j++) { String string = photoInfoArray[i + j].getPhotoUrl(); shareImage.add(string); ImageView image = new ImageView(mActivity); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( layoutWidth / 2, 3 * layoutWidth / 8); lp.setMargins(0, 0, 5, 5); image.setLayoutParams(lp); image.setScaleType(ScaleType.CENTER_CROP); bitmapManager.loadBitmap(string, image); linearLayout.addView(image); i = i + j; image.setTag(i); // 设置监听 image.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Intent intent = new Intent(mActivity, ImageDetailsActivity.class); intent.putExtra(ImageDetailsActivity.IMAGE_ARRAY, photoInfoArray); intent.putExtra( ImageDetailsActivity.IMAGE_POSITION, Integer.parseInt(arg0.getTag().toString())); mActivity.startActivity(intent); } }); } this.bodyLayout.addView(linearLayout); } z++; } } /** * 添加原iChoose主体布局 * * @param photoInfoArray */ private void addChooseBody(final IsharePhotoInfo[] photoInfoArray) { // 图片数量 int size = photoInfoArray.length; // 判断是否为图片,加入list for (IsharePhotoInfo photoInfo : photoInfoArray) { if (photoInfo.getPhotoUrl().contains(".jpg") || photoInfo.getPhotoUrl().contains(".png")) { imageUrlList.add(photoInfo.getPhotoUrl()); } } // 如果只有一张图片 if (size == 1) { RelativeLayout relativeLayout = new RelativeLayout(mActivity); RelativeLayout.LayoutParams rll = new RelativeLayout.LayoutParams( layoutWidth, layoutWidth); relativeLayout.setLayoutParams(rll); /****************************************************************** 整体的背景图 */ ImageView image = new ImageView(mActivity); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT); image.setLayoutParams(lp); image.setTag(0); image.setScaleType(ScaleType.CENTER_CROP); image.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(mActivity, ImageDetailsActivity.class); intent.putExtra(ImageDetailsActivity.IMAGE_ARRAY, photoInfoArray); intent.putExtra(ImageDetailsActivity.IMAGE_POSITION, Integer.parseInt(v.getTag().toString())); mActivity.startActivity(intent); } }); relativeLayout.addView(image, lp); shareImage.add(photoInfoArray[0].getPhotoUrl()); bitmapManager.loadBitmap(photoInfoArray[0].getPhotoUrl(), image); /****************************************************************** yes背景图 */ RelativeLayout.LayoutParams rlp_left = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); rlp_left.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); rlp_left.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); rlp_left.setMargins(15, 0, 0, 25); ImageView left = new ImageView(mActivity); left.setId(1); left.setImageResource(R.drawable.ichoose_item_middle_yes); ImageView left_bg = new ImageView(mActivity); left_bg.setImageResource(R.drawable.ichoose_item_middle_yes_bg); imageViewList.add(left_bg); relativeLayout.addView(left, rlp_left); /****************************************************************** no背景图 */ RelativeLayout.LayoutParams rlp_right = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); rlp_right.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); rlp_right.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); rlp_right.setMargins(0, 0, 15, 25); ImageView right = new ImageView(mActivity); right.setId(2); right.setImageResource(R.drawable.ichoose_item_middle_no); ImageView right_bg = new ImageView(mActivity); right_bg.setImageResource(R.drawable.ichoose_item_middle_no_bg); imageViewList.add(right_bg); relativeLayout.addView(right, rlp_right); /****************************************************************** yes选择按钮 */ int yeslayoutheight = getResources().getDrawable( R.drawable.ichoose_item_middle_yes).getMinimumHeight(); RelativeLayout.LayoutParams rlp_yes = new RelativeLayout.LayoutParams( yeslayoutheight, yeslayoutheight); rlp_yes.addRule(RelativeLayout.ALIGN_TOP, left.getId()); rlp_yes.addRule(RelativeLayout.ALIGN_LEFT, left.getId()); CircleProgress yes_c = new CircleProgress(mActivity); circleProgressList.add(yes_c); yes_c.setBackgroundResource(R.drawable.ichoose_circle_hook); yes_c.setPadding(2, 2, 2, 2); relativeLayout.addView(yes_c, rlp_yes); /****************************************************************** no选择按钮 */ int nolayoutheight = getResources().getDrawable( R.drawable.ichoose_item_middle_no).getMinimumHeight(); RelativeLayout.LayoutParams rlp_no = new RelativeLayout.LayoutParams( nolayoutheight, nolayoutheight); rlp_no.addRule(RelativeLayout.ALIGN_TOP, right.getId()); rlp_no.addRule(RelativeLayout.ALIGN_RIGHT, right.getId()); CircleProgress no_c = new CircleProgress(mActivity); circleProgressList.add(no_c); no_c.setBackgroundResource(R.drawable.ichoose_circle_hook); no_c.setPadding(2, 2, 2, 2); relativeLayout.addView(no_c, rlp_no); // 添加布局 this.bodyLayout.addView(relativeLayout); if (userChoose == -1) { relativeLayout.addView(left_bg, rlp_left); relativeLayout.addView(right_bg, rlp_right); yes_c.setVisibility(View.INVISIBLE); no_c.setVisibility(View.INVISIBLE); } else { setProgress(userChoose, false); } /********************************************************************* 设置监听 */ left_bg.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (userChoose == -1) { info.setEventIsVote(0); setVote(info.getEventVoteNumber() + 1); } userChoose = 0; setProgress(userChoose, true); for (ImageView iv : imageViewList) { iv.setVisibility(View.INVISIBLE); } for (CircleProgress cp : circleProgressList) { cp.setVisibility(View.VISIBLE); } // 向服务器发送投票请求 sendVote(userChoose); } }); right_bg.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (userChoose == -1) { info.setEventIsVote(1); setVote(info.getEventVoteNumber() + 1); } userChoose = 1; setProgress(userChoose, true); for (ImageView iv : imageViewList) { iv.setVisibility(View.INVISIBLE); } for (CircleProgress cp : circleProgressList) { cp.setVisibility(View.VISIBLE); } // 向服务器发送投票请求 sendVote(userChoose); } }); yes_c.setOnClickListener(new OnClickListener() { public void onClick(View v) { userChoose = 0; setProgress(userChoose, true); // 向服务器发送投票请求 sendVote(userChoose); } }); no_c.setOnClickListener(new OnClickListener() { public void onClick(View v) { userChoose = 1; setProgress(userChoose, true); // 向服务器发送投票请求 sendVote(userChoose); } }); } else { for (int i = 0; i < size; i++) { LinearLayout linearLayout = new LinearLayout(mActivity); linearLayout.setOrientation(LinearLayout.HORIZONTAL); for (int j = 0; j < 2; j++) { if (i + j >= size) { break; } RelativeLayout relativeLayout = new RelativeLayout( mActivity); LinearLayout.LayoutParams rll = new LinearLayout.LayoutParams( layoutWidth / 2, layoutWidth / 2); if (j == 0) { rll.setMargins(0, 0, 0, 5); } else { rll.setMargins(5, 0, 0, 5); } relativeLayout.setLayoutParams(rll); /****************************************************************** 整体的背景图 */ ImageView image = new ImageView(mActivity); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); lp.setMargins(0, 0, 5, 5); image.setLayoutParams(lp); image.setScaleType(ScaleType.CENTER_CROP); image.setTag(i + j); image.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(mActivity, ImageDetailsActivity.class); intent.putExtra(ImageDetailsActivity.IMAGE_ARRAY, photoInfoArray); intent.putExtra( ImageDetailsActivity.IMAGE_POSITION, Integer.parseInt(v.getTag().toString())); mActivity.startActivity(intent); } }); relativeLayout.addView(image); shareImage.add(photoInfoArray[i + j].getPhotoUrl()); bitmapManager.loadBitmap( photoInfoArray[i + j].getPhotoUrl(), image); /****************************************************************** yes背景图 */ RelativeLayout.LayoutParams rlp_left = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); rlp_left.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); rlp_left.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); rlp_left.setMargins(15, 0, 0, 15); ImageView left_bg = new ImageView(mActivity); left_bg.setImageResource(R.drawable.ichoose_circle_bg2); left_bg.setId(3); relativeLayout.addView(left_bg, rlp_left); ImageView left = new ImageView(mActivity); left.setImageResource(R.drawable.ichoose_circle_bg); left.setTag(i + j); imageViewList.add(left); /****************************************************************** yes选择按钮 */ int layoutheight = getResources().getDrawable( R.drawable.ichoose_circle_bg2).getMinimumHeight(); RelativeLayout.LayoutParams rlp_yes = new RelativeLayout.LayoutParams( layoutheight, layoutheight); rlp_yes.addRule(RelativeLayout.ALIGN_TOP, 3); rlp_yes.addRule(RelativeLayout.ALIGN_LEFT, 3); rlp_yes.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); CircleProgress yes_c = new CircleProgress(mActivity); yes_c.setTag(i + j); circleProgressList.add(yes_c); yes_c.setOnClickListener(new OnClickListener() { public void onClick(View v) { int i = Integer.parseInt(v.getTag().toString()); userChoose = i; setProgress(userChoose, true); // 向服务器发送投票请求 sendVote(userChoose); } }); yes_c.setPadding(2, 2, 2, 2); yes_c.setBackgroundResource(R.drawable.ichoose_circle_hook); relativeLayout.addView(yes_c, rlp_yes); linearLayout.addView(relativeLayout); i = i + j; if (userChoose == -1) { relativeLayout.addView(left, rlp_left); yes_c.setVisibility(View.INVISIBLE); } else { setProgress(userChoose, false); } left.setOnClickListener(new OnClickListener() { public void onClick(View v) { int i = Integer.parseInt(v.getTag().toString()); if (userChoose == -1) { info.setEventIsVote(i); setVote(info.getEventVoteNumber() + 1); } userChoose = i; setProgress(userChoose, true); for (ImageView iv : imageViewList) { iv.setVisibility(View.INVISIBLE); } for (CircleProgress cp : circleProgressList) { cp.setVisibility(View.VISIBLE); } // 向服务器发送投票请求 sendVote(userChoose); } }); } // 添加布局 this.bodyLayout.addView(linearLayout); } } } /** * 选中点击效果 * * @param position * 用户投票的对象下标 * @param hasAnima * 是否开启动画 */ private void setProgress(int position, boolean hasAnima) { // 计算总投票数 float sum = 0; IsharePhotoInfo[] array = info.getEventBgArray(); // 历史选择 if (oldPosition == -1) { oldPosition = info.getEventIsVote(); } // 图片数量 int photoNumber = array.length; // 新选择的和原始选择不一致 if (hasAnima && position != oldPosition) { if (photoNumber == 1) { // 只有一张图片 if (oldPosition == 0) { array[0].setChooseYesNum(array[0].getChooseYesNum() - 1); } else { array[0].setChooseNoNum(array[0].getChooseNoNum() - 1); } } else { array[oldPosition].setChooseYesNum(array[oldPosition] .getChooseYesNum() - 1); } } for (IsharePhotoInfo item : array) { sum += item.getChooseYesNum(); sum += item.getChooseNoNum(); } for (int i = 0; i < circleProgressList.size(); i++) { CircleProgress circlrProgress = circleProgressList.get(i); if (i == position) { // 选中状态 circlrProgress.setMainPaintColor(Color.parseColor("#00bcff")); circlrProgress.setBottomPaintColor(Color.parseColor("#0091c4")); if (photoNumber == 1 && position == 1) { // 一张,并且投了no if (hasAnima && position != oldPosition) { // 相对应的选项加上数量 array[0].setChooseNoNum(array[0].getChooseNoNum() + 1); circlrProgress.startCartoom((int) (((array[0] .getChooseNoNum()) / (sum + 1)) * 100)); info.setEventIsPraise(1); } else { circlrProgress.startCartoom((int) ((array[0] .getChooseNoNum() / sum) * 100)); } } else { if (hasAnima && position != oldPosition) { array[i].setChooseYesNum(array[i].getChooseYesNum() + 1); circlrProgress.startCartoom((int) ((array[i] .getChooseYesNum() / (sum + 1)) * 100)); info.setEventIsPraise(i); } else { circlrProgress.setMainProgress((int) ((array[i] .getChooseYesNum() / sum) * 100)); } } } else { // 未选中状态 circlrProgress.setMainPaintColor(Color.parseColor("#707070")); circlrProgress.setBottomPaintColor(Color.GRAY); if (photoNumber == 1 && position == 0) { // 一张,并且投了yes if (hasAnima && position != oldPosition) { circlrProgress.startCartoom((int) ((array[0] .getChooseNoNum() / (sum + 1)) * 100)); } else { circlrProgress.setMainProgress((int) ((array[0] .getChooseNoNum() / sum) * 100)); } } else { if (hasAnima && position != oldPosition) { circlrProgress.startCartoom((int) ((array[i] .getChooseYesNum() / (sum + 1)) * 100)); } else { circlrProgress.setMainProgress((int) ((array[i] .getChooseYesNum() / sum) * 100)); } } } } oldPosition = position; } /** * 向服务器发送投票操作请求 * * @param choose */ private void sendVote(int choose) { AppContext context = (AppContext) mActivity.getApplicationContext(); Ishare_setVoteForIshareRequest request = new Ishare_setVoteForIshareRequest(); request.setIshareId(info.getIshareId()); request.setUserId(context.getLoginUid()); // 一张图片的情况 if (info.getEventBgArray().length == 1) { request.setPhotoId(info.getEventBgArray()[0].getPhotoId()); if (choose == 0) { request.setVoteType(0); } else { request.setVoteType(1); } } else { // 多张图片的情况 request.setPhotoId(info.getEventBgArray()[choose].getPhotoId()); request.setVoteType(0); } context.getmDataProvider().getJsonFromNetwork(request, this); } /** * 设置投票 * * @param vote * 要设置的 vote */ public void setVote(int vote) { if (info.getEventIsVote() != -1) { praiseImg.setImageResource(R.drawable.ishare_item_vote_pressed); } if (vote == 0) { this.eventPraiseNumber.setText("投票"); } else { this.eventPraiseNumber.setText(vote + ""); } } private void setEventShareNumber(int eventShareNumber) { if (eventShareNumber == 0) { this.eventShareNumber.setText("分享"); } else { this.eventShareNumber.setText(eventShareNumber + ""); } } private void setEventPraiseNumber(int eventPraiseNumber) { if (eventPraiseNumber == 0) { this.eventPraiseNumber.setText("赞"); } else { this.eventPraiseNumber.setText(eventPraiseNumber + ""); } } private void setEventNumberOfComments(int eventNumberOfComments) { if (eventNumberOfComments == 0) { this.eventNumberOfComments.setText("评论"); } else { this.eventNumberOfComments.setText(eventNumberOfComments + ""); } } public void onNetworkRequest() { // TODO 自动生成的方法存根 } public void onResultSuccess(NetworkEntity entity) { if (entity.getRequest().getAction() .equals(new Ishare_setOperatingForIshareRequest().getAction())) { Ishare_setOperatingForIshareResponse response = (Ishare_setOperatingForIshareResponse) entity .getResponse(); info.setEventPraiseNumber(response.getDetails()); if (info.getEventIsPraise() == 0) { info.setEventIsPraise(1); } else { info.setEventIsPraise(0); } initPraise(); } else if (entity.getRequest().getAction() .equals(new Ishare_setOperatingForIshareRequest().getAction())) { } } public void onResultFail(String result) { // TODO 自动生成的方法存根 } }