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); } }