package cn.bidaround.youtui_template;
import java.util.ArrayList;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import cn.bidaround.point.PointActivity;
import cn.bidaround.ytcore.YtCore;
import cn.bidaround.ytcore.data.ShareData;
import cn.bidaround.ytcore.util.Constant;
import cn.bidaround.ytcore.util.Util;
/**
* 白色九宫格样式模板
*
* @author youtui
* @since 14/6/25
*/
public class WhiteGridTemplate extends YTBasePopupWindow implements OnClickListener, OnPageChangeListener {
private GridView pagerOne_gridView, pagerTwo_gridView;
// private ShareGridAdapter pagerOne_gridAdapter, pagerTwo_gridAdapter;
private TemplateAdapter pagerOne_gridAdapter, pagerTwo_gridAdapter;
private View sharepopup_indicator_linelay;
private ImageView zeroIamge, oneIamge;
private ViewPager viewPager;
private TextView yt_whiteviewpager_screencap_text;
private Handler uiHandler = new Handler();
// 每一页包含的分享平台个数
private final int ITEM_AMOUNT = Integer.MAX_VALUE;
private TextView cancelBt;
public WhiteGridTemplate(Activity act, boolean hasAct, YtTemplate template, ShareData shareData, ArrayList<String> enList) {
super(act, hasAct, template, shareData, enList);
instance = this;
}
@Override
public void refresh() {
if (pagerOne_gridAdapter != null) {
pagerOne_gridAdapter.notifyDataSetChanged();
}
if (pagerTwo_gridAdapter != null) {
pagerTwo_gridAdapter.notifyDataSetChanged();
}
}
/**
* 显示分享界面
*/
@SuppressWarnings("deprecation")
public void show() {
View view = LayoutInflater.from(act).inflate(YtCore.res.getIdentifier("yt_popup_whiteviewpager", "layout", YtCore.packName), null);
initButton(view);
initViewPager(view);
// 设置whitepopupwindow的属
setFocusable(true);
setOutsideTouchable(true);
setBackgroundDrawable(YtCore.res.getDrawable(YtCore.res.getIdentifier("yt_side", "drawable", YtCore.packName)));
setContentView(view);
setWidth(act.getWindowManager().getDefaultDisplay().getWidth());
if (template.getPopwindowHeight() > 0) {
setHeight(template.getPopwindowHeight());
} else {
if (enList.size() <= 3) {
setHeight(Util.dip2px(act, 230));
} else if (3 < enList.size() && enList.size() <= 6) {
setHeight(Util.dip2px(act, 340));
} else if (enList.size() > 6) {
setHeight(Util.dip2px(act, 445));
}
}
if (template.getAnimationStyle() == YtTemplate.ANIMATIONSTYLE_DEFAULT) {
setAnimationStyle(YtCore.res.getIdentifier("YtSharePopupAnim", "style", YtCore.packName));
} else if (template.getAnimationStyle() == YtTemplate.ANIMATIONSTYLE_SYSTEM) {
}
showAtLocation(getContentView(), Gravity.BOTTOM, 0, 0);
IntentFilter filter = new IntentFilter(Constant.BROADCAST_ISONACTION);
act.registerReceiver(receiver, filter);
}
/**
* 初始化积分按钮
*
* @param view
*/
private void initButton(View view) {
zeroIamge = (ImageView) view.findViewById(YtCore.res.getIdentifier("popup_whiteviewpage_zero_iv", "id", YtCore.packName));
oneIamge = (ImageView) view.findViewById(YtCore.res.getIdentifier("popup_whiteviewpage_one_iv", "id", YtCore.packName));
cancelBt = (TextView) view.findViewById(YtCore.res.getIdentifier("popup_whiteviewpage_cancel_bt", "id", YtCore.packName));
if (template.isOnAction() && YtTemplate.getActionName() != null && hasAct) {
cancelBt.setText(YtTemplate.getActionName());
} else {
String cancel = YtCore.res.getString(YtCore.res.getIdentifier("yt_cancel", "string", YtCore.packName));
cancelBt.setText(cancel);
}
cancelBt.setOnClickListener(this);
yt_whiteviewpager_screencap_text = (TextView) view.findViewById(YtCore.res.getIdentifier("yt_whiteviewpager_screencap_text", "id", YtCore.packName));
yt_whiteviewpager_screencap_text.setOnClickListener(this);
if (template.isScreencapVisible()) {
yt_whiteviewpager_screencap_text.setVisibility(View.VISIBLE);
} else {
yt_whiteviewpager_screencap_text.setVisibility(View.INVISIBLE);
}
}
/**
* 初始化viewpager
*/
private void initViewPager(View view) {
viewPager = (ViewPager) view.findViewById(YtCore.res.getIdentifier("popup_whiteviewpage_viewpager", "id", YtCore.packName));
sharepopup_indicator_linelay = view.findViewById(YtCore.res.getIdentifier("popup_whiteviewpage_indicator_linelay", "id", YtCore.packName));
ArrayList<View> pagerList = new ArrayList<View>();
// enList = KeyInfo.enList;
// 如果分享的数目<=PAGER_ITEM_SIZE,只放置一页
if (enList.size() <= ITEM_AMOUNT) {
View pagerOne = LayoutInflater.from(act).inflate(YtCore.res.getIdentifier("yt_share_pager", "layout", YtCore.packName), null);
pagerOne_gridView = (GridView) pagerOne.findViewById(YtCore.res.getIdentifier("sharepager_grid", "id", YtCore.packName));
// pagerOne_gridAdapter = new ShareGridAdapter(act, enList,
// showStyle);
pagerOne_gridAdapter = new TemplateAdapter(act, enList, Constant.WHITE_GRID_LAYOUT_NAME, hasAct);
pagerOne_gridView.setAdapter(pagerOne_gridAdapter);
pagerOne_gridView.setOnItemClickListener(this);
pagerList.add(pagerOne);
} else if (enList.size() > ITEM_AMOUNT && enList.size() <= ITEM_AMOUNT * 2) {
// 分享数量PAGER_ITEM_SIZE~PAGER_ITEM_SIZE*2之间,放置两页
ArrayList<String> pagerOneList = new ArrayList<String>();
for (int i = 0; i < ITEM_AMOUNT; i++) {
pagerOneList.add(enList.get(i));
}
// 初始化第一页
View pagerOne = LayoutInflater.from(act).inflate(YtCore.res.getIdentifier("yt_share_pager", "layout", YtCore.packName), null);
pagerOne_gridView = (GridView) pagerOne.findViewById(YtCore.res.getIdentifier("sharepager_grid", "id", YtCore.packName));
// pagerOne_gridAdapter = new ShareGridAdapter(act, pagerOneList,
// showStyle);
pagerOne_gridAdapter = new TemplateAdapter(act, pagerOneList, Constant.WHITE_GRID_LAYOUT_NAME, hasAct);
pagerOne_gridView.setAdapter(pagerOne_gridAdapter);
pagerOne_gridView.setOnItemClickListener(this);
pagerList.add(pagerOne);
ArrayList<String> pagerTwoList = new ArrayList<String>();
for (int i = ITEM_AMOUNT; i < enList.size(); i++) {
pagerTwoList.add(enList.get(i));
}
// 初始化第二页
View pagerTwo = LayoutInflater.from(act).inflate(YtCore.res.getIdentifier("yt_share_pager", "layout", YtCore.packName), null);
pagerTwo_gridView = (GridView) pagerTwo.findViewById(YtCore.res.getIdentifier("sharepager_grid", "id", YtCore.packName));
// pagerTwo_gridAdapter = new ShareGridAdapter(act, pagerTwoList,
// showStyle);
pagerTwo_gridAdapter = new TemplateAdapter(act, pagerTwoList, Constant.WHITE_GRID_LAYOUT_NAME, hasAct);
pagerTwo_gridView.setAdapter(pagerTwo_gridAdapter);
pagerTwo_gridView.setOnItemClickListener(this);
pagerList.add(pagerTwo);
}
SharePagerAdapter pagerAdapter = new SharePagerAdapter(pagerList);
viewPager.setAdapter(pagerAdapter);
viewPager.setOffscreenPageLimit(2);
// 设置滑动下标
if (enList.size() > ITEM_AMOUNT && enList.size() <= ITEM_AMOUNT * 2) {
viewPager.setOnPageChangeListener(this);
} else if (enList.size() <= ITEM_AMOUNT) {
if (sharepopup_indicator_linelay != null) {
sharepopup_indicator_linelay.setVisibility(View.INVISIBLE);
}
}
}
/**
* 活动按钮事件
*/
@Override
public void onClick(View v) {
if (v.getId() == YtCore.res.getIdentifier("popup_whiteviewpage_cancel_bt", "id", YtCore.packName)) {
/** 有活动点击显示活动规则 */
if (template.isOnAction() && YtTemplate.getActionName() != null && hasAct) {
Intent it = new Intent(act, PointActivity.class);
act.startActivity(it);
} else {
this.dismiss();
}
} else if (v.getId() == YtCore.res.getIdentifier("yt_whiteviewpager_screencap_text", "id", YtCore.packName)) {
// 截屏按钮
TemplateUtil.GetandSaveCurrentImage(act, true);
Intent it = new Intent(act, ScreenCapEditActivity.class);
it.putExtra("viewType", template.getViewType());
if (shareData.isAppShare()) {
it.putExtra("target_url", YtCore.getInstance().getTargetUrl());
} else {
it.putExtra("target_url", shareData.getTargetUrl());
}
it.putExtra("capdata", template.getCapData());
it.putExtra("shareData", shareData);
act.startActivity(it);
this.dismiss();
}
}
/**
* 分享按钮点击事件
*/
@Override
public void onItemClick(final AdapterView<?> adapterView, View arg1, int position, long arg3) {
if (Util.isNetworkConnected(act)) {
if (adapterView == pagerOne_gridView) {
new YTShare(act).doGridShare(position, 0, template, shareData, ITEM_AMOUNT, instance, instance.getHeight());
} else if (adapterView == pagerTwo_gridView) {
new YTShare(act).doGridShare(position, 1, template, shareData, ITEM_AMOUNT, instance, instance.getHeight());
}
adapterView.setEnabled(false);
uiHandler.postDelayed(new Runnable() {
@Override
public void run() {
adapterView.setEnabled(true);
}
}, 500);
if(template.isDismissAfterShare()){
dismiss();
}
} else {
String noNetwork = YtCore.res.getString(YtCore.res.getIdentifier("yt_nonetwork", "string", YtCore.packName));
Toast.makeText(act, noNetwork, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
/**
* 页面选择监听,这里用来显示viewpager下标
*/
@Override
public void onPageSelected(int index) {
// viewpager下标
switch (index) {
case 0:
zeroIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_black", "drawable", YtCore.packName)));
oneIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_white", "drawable", YtCore.packName)));
break;
case 1:
zeroIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_white", "drawable", YtCore.packName)));
oneIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_black", "drawable", YtCore.packName)));
break;
default:
break;
}
}
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent it) {
if (Constant.BROADCAST_ISONACTION.equals(it.getAction()) && hasAct) {
/** 如果读取到活动名,设置取消按钮为活动名 */
if (cancelBt != null) {
cancelBt.setText(YtTemplate.getActionName());
refresh();
}
}
}
};
@Override
public void dismiss() {
try {
act.unregisterReceiver(receiver);
} catch (Exception e) {
}
super.dismiss();
};
}