package com.partynetwork.iparty.ishare;
import com.partynetwork.iparty.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
/**
* 底部菜单栏
*/
public class PullDownView extends PopupWindow implements OnClickListener {
private View view;
private Context mContext;
private ListView pullDownList;
private PullDownAdapter pullDownAdapter;
private FilterListener filterListener;
private RelativeLayout topOne;
private TextView textOne;
private ImageView imageOne;
private RelativeLayout topTwo;
private TextView textTwo;
private ImageView imageTwo;
private RelativeLayout topThree;
private TextView testThree;
private ImageView imageThree;
private RelativeLayout topFour;
private TextView textFour;
private ImageView imageFour;
private View otherLayout;
private int[] resIds;
private String[] titleArray;
private String[] colors;
private int type;
private int oldPosition = -1;
private RadioButton[] rbs;
/**
*
* @param context
* @param res
* @param str
* @param colors
* @param type
* 0:iparty;1:i分享
*/
public PullDownView(Context context, int[] res, String[] str,
String[] colors, int type) {
super(context);
this.mContext = context;
this.resIds = res;
this.titleArray = str;
this.colors = colors;
this.type = type;
view = LayoutInflater.from(context).inflate(R.layout.popup_pulldown,
null);
initView();
initDate();
setListener();
// 设置SelectPicPopupWindow弹出窗体的宽
this.setWidth(LayoutParams.FILL_PARENT);
// 设置SelectPicPopupWindow弹出窗体的高
this.setHeight(LayoutParams.WRAP_CONTENT);
// 设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
// 设置SelectPicPopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.iparty_pulldownStyle_anima);
// 实例化一个ColorDrawable颜色为半透明
ColorDrawable dw = new ColorDrawable(0x00000000);
// 设置SelectPicPopupWindow弹出窗体的背景
this.setBackgroundDrawable(dw);
// 设置SelectPicPopupWindow的View
setContentView(view);
}
/**
* 初始化
*/
private void initDate() {
if (this.titleArray.length > 4) {
textOne.setText(titleArray[0]);
textOne.setTextColor(Color.parseColor(colors[0]));
textTwo.setText(titleArray[1]);
textTwo.setTextColor(Color.parseColor(colors[1]));
testThree.setText(titleArray[2]);
testThree.setTextColor(Color.parseColor(colors[2]));
textFour.setText(titleArray[3]);
textFour.setTextColor(Color.parseColor(colors[3]));
}
if (this.resIds.length == 4) {
imageOne.setImageResource(resIds[0]);
imageTwo.setImageResource(resIds[1]);
imageThree.setImageResource(resIds[2]);
imageFour.setImageResource(resIds[3]);
}
// 初始化显示数据
String[] array = new String[titleArray.length - 4];
for (int i = 0; i < titleArray.length - 4; i++) {
array[i] = titleArray[i + 4];
}
rbs = new RadioButton[array.length];
for (int i = 0; i < array.length; i++) {
RadioButton radioButton = new RadioButton(mContext);
radioButton.setTag(i);
radioButton.setText(array[i]);
radioButton.setTextColor(Color.BLACK);
radioButton.setTextSize(15);
Bitmap a = null;
radioButton.setButtonDrawable(new BitmapDrawable(a));
if (type == 0) {
radioButton
.setBackgroundResource(R.drawable.menu_pulldown_iparty_item_selector);
} else {
radioButton
.setBackgroundResource(R.drawable.menu_pulldown_share_item_selector);
}
radioButton.setChecked(false);
radioButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (oldPosition != -1) {
rbs[oldPosition].setChecked(false);
}
oldPosition = (Integer) arg0.getTag();
rbs[oldPosition].setChecked(true);
if (filterListener != null) {
filterListener.choose(oldPosition + 4);
dismiss();
}
}
});
rbs[i] = radioButton;
}
// 初始化内容适配器
pullDownAdapter = new PullDownAdapter(array);
pullDownList.setAdapter(pullDownAdapter);
pullDownList.setFocusable(true);
}
private void initView() {
topOne = (RelativeLayout) view.findViewById(R.id.pulldown_top_one);
topOne.setOnClickListener(this);
textOne = (TextView) view.findViewById(R.id.text_one);
imageOne = (ImageView) view.findViewById(R.id.image_one);
topTwo = (RelativeLayout) view.findViewById(R.id.pulldown_top_two);
topTwo.setOnClickListener(this);
textTwo = (TextView) view.findViewById(R.id.text_two);
imageTwo = (ImageView) view.findViewById(R.id.image_two);
topThree = (RelativeLayout) view.findViewById(R.id.pulldown_top_three);
topThree.setOnClickListener(this);
testThree = (TextView) view.findViewById(R.id.text_three);
imageThree = (ImageView) view.findViewById(R.id.image_three);
topFour = (RelativeLayout) view.findViewById(R.id.pulldown_top_four);
topFour.setOnClickListener(this);
textFour = (TextView) view.findViewById(R.id.text_four);
imageFour = (ImageView) view.findViewById(R.id.image_four);
pullDownList = (ListView) view.findViewById(R.id.pulldown_list);
otherLayout = view.findViewById(R.id.other_layout);
otherLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
dismiss();
}
});
}
/**
* 事件监听
*
* @param view
*/
public void onClick(View view) {
if (filterListener != null) {
switch (view.getId()) {
case R.id.pulldown_top_one:
filterListener.choose(0);
break;
case R.id.pulldown_top_two:
filterListener.choose(1);
break;
case R.id.pulldown_top_three:
filterListener.choose(2);
break;
case R.id.pulldown_top_four:
filterListener.choose(3);
break;
default:
break;
}
if (oldPosition != -1) {
rbs[oldPosition].setChecked(false);
oldPosition = -1;
}
dismiss();
}
}
/**
* 设置监听
*/
private void setListener() {
pullDownList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (filterListener != null) {
filterListener.choose(position + 4);
dismiss();
}
}
});
}
public class PullDownAdapter extends ArrayAdapter<String> {
public PullDownAdapter(String[] objects) {
super(mContext, 0, objects);
}
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = rbs[position];
}
return itemView;
}
}
/**
* 设置回调处理监听
*
* @param filterListener
*/
public void setFilterListener(FilterListener filterListener) {
this.filterListener = filterListener;
}
public interface FilterListener {
public abstract void choose(int position);
}
}