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 自动生成的方法存根
}
}