package cn.bidaround.youtui_template;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
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.Button;
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;
/**
* viewpager+gridview 黑色网格样式分享样式
*
* @author youtui
* @since 14/4/25
*/
@SuppressLint("ViewConstructor")
public class BlackGridTemplate extends YTBasePopupWindow implements OnClickListener, OnPageChangeListener {
/** 判断该分享页面是否正在运行 */
private GridView pagerOne_gridView, pagerTwo_gridView, pagerThird_gridView;
private TemplateAdapter pagerOne_gridAdapter, pagerTwo_gridAdapter, pagerThird_gridAdapter;
private View sharepopup_indicator_linelay;
private ImageView zeroIamge, oneIamge, twoIamge;
private ViewPager viewPager;
private final int ITEM_AMOUNT = 6;
private TextView yt_blackpopup_screencap_text;
private Button cancelBt;
public BlackGridTemplate(Activity act, boolean hasAct, YtTemplate template, ShareData shareData, ArrayList<String> enList) {
super(act, hasAct, template, shareData, enList);
instance = this;
}
/**
* 显示分享界面
*/
@SuppressWarnings("deprecation")
public void show() {
View view = LayoutInflater.from(act).inflate(YtCore.res.getIdentifier("yt_popup_viewpager", "layout", YtCore.packName), null);
initButton(view);
initViewPager(view);
// 设置popupwindow的属性
setFocusable(true);
setOutsideTouchable(true);
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 {
setHeight(Util.dip2px(act, 335));
}
}
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("sharepopup_zero_iv", "id", YtCore.packName));
oneIamge = (ImageView) view.findViewById(YtCore.res.getIdentifier("sharepopup_one_iv", "id", YtCore.packName));
twoIamge = (ImageView) view.findViewById(YtCore.res.getIdentifier("sharepopup_two_iv", "id", YtCore.packName));
if (enList.size() <= 12)
twoIamge.setVisibility(View.GONE);
cancelBt = (Button) view.findViewById(YtCore.res.getIdentifier("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_blackpopup_screencap_text = (TextView) view.findViewById(YtCore.res.getIdentifier("yt_blackpopup_screencap_text", "id", YtCore.packName));
yt_blackpopup_screencap_text.setOnClickListener(this);
if (template.isScreencapVisible()) {
yt_blackpopup_screencap_text.setVisibility(View.VISIBLE);
} else {
yt_blackpopup_screencap_text.setVisibility(View.INVISIBLE);
}
}
/**
* 初始化viewpager
*/
private void initViewPager(View view) {
viewPager = (ViewPager) view.findViewById(YtCore.res.getIdentifier("share_viewpager", "id", YtCore.packName));
sharepopup_indicator_linelay = view.findViewById(YtCore.res.getIdentifier("sharepopup_indicator_linelay", "id", YtCore.packName));
ArrayList<View> pagerList = new ArrayList<View>();
// 添加第一页
if (enList.size() <= 6)
pagerList.add(initOneView());
// 添加第二页
else if (enList.size() > 6 && enList.size() <= 12) {
pagerList.add(initOneView());
pagerList.add(initTwoView());
}
// 添加第三页
else if (enList.size() > 12 && enList.size() <= 18) {
pagerList.add(initOneView());
pagerList.add(initTwoView());
pagerList.add(initThirdView());
}
SharePagerAdapter pagerAdapter = new SharePagerAdapter(pagerList);
viewPager.setAdapter(pagerAdapter);
viewPager.setOffscreenPageLimit(3);
// 设置滑动下标
if (enList.size() > 6) {
viewPager.setOnPageChangeListener(this);
} else if (enList.size() <= 6) {
if (sharepopup_indicator_linelay != null) {
sharepopup_indicator_linelay.setVisibility(View.INVISIBLE);
}
}
}
private View initOneView() {
ArrayList<String> pagerOneList = new ArrayList<String>();
int last = 6;
if (enList.size() < last)
last = enList.size();
for (int i = 0; i < last; 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, enList, showStyle);
pagerOne_gridAdapter = new TemplateAdapter(act, pagerOneList, Constant.BLACK_GRID_LAYOUT_NAME, hasAct);
pagerOne_gridView.setAdapter(pagerOne_gridAdapter);
pagerOne_gridView.setOnItemClickListener(this);
return pagerOne;
}
private View initTwoView() {
ArrayList<String> pagerTwoList = new ArrayList<String>();
int last = 12;
if (enList.size() < last)
last = enList.size();
for (int i = 6; i < last; 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 TemplateAdapter(act, pagerTwoList, Constant.BLACK_GRID_LAYOUT_NAME, hasAct);
pagerTwo_gridView.setAdapter(pagerTwo_gridAdapter);
pagerTwo_gridView.setOnItemClickListener(this);
return pagerTwo;
}
private View initThirdView() {
ArrayList<String> pagerThirdList = new ArrayList<String>();
int last = 18;
if (enList.size() < last)
last = enList.size();
for (int i = 12; i < last; i++) {
pagerThirdList.add(enList.get(i));
}
// 初始化第三页
View pagerThird = LayoutInflater.from(act).inflate(YtCore.res.getIdentifier("yt_share_pager", "layout", YtCore.packName), null);
pagerThird_gridView = (GridView) pagerThird.findViewById(YtCore.res.getIdentifier("sharepager_grid", "id", YtCore.packName));
pagerThird_gridAdapter = new TemplateAdapter(act, pagerThirdList, Constant.BLACK_GRID_LAYOUT_NAME, hasAct);
pagerThird_gridView.setAdapter(pagerThird_gridAdapter);
pagerThird_gridView.setOnItemClickListener(this);
return pagerThird;
}
/**
* 活动按钮事件
*/
@Override
public void onClick(View v) {
if (v.getId() == YtCore.res.getIdentifier("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("share_popup_knowtv", "id", YtCore.packName)) {
} else if (v.getId() == YtCore.res.getIdentifier("share_popup_checktv", "id", YtCore.packName)) {
} else if (v.getId() == YtCore.res.getIdentifier("yt_blackpopup_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(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());
} else if (adapterView == pagerThird_gridView) {
new YTShare(act).doGridShare(position, 2, template, shareData, ITEM_AMOUNT, instance, instance.getHeight());
}
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 refresh() {
if (pagerOne_gridAdapter != null) {
pagerOne_gridAdapter.notifyDataSetChanged();
}
if (pagerTwo_gridAdapter != null) {
pagerTwo_gridAdapter.notifyDataSetChanged();
}
}
/**
* viewpager状态变化监听
*/
@Override
public void onPageScrollStateChanged(int arg0) {
}
/**
* viewpager滑动监听
*/
@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_white", "drawable", YtCore.packName)));
oneIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_black", "drawable", YtCore.packName)));
twoIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_black", "drawable", YtCore.packName)));
break;
case 1:
twoIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_black", "drawable", YtCore.packName)));
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 2:
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_black", "drawable", YtCore.packName)));
twoIamge.setImageDrawable(act.getResources().getDrawable(YtCore.res.getIdentifier("yt_guide_dot_white", "drawable", YtCore.packName)));
break;
default:
break;
}
}
@Override
public void dismiss() {
try {
act.unregisterReceiver(receiver);
} catch (Exception e) {
}
super.dismiss();
}
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();
}
}
}
};
}