Android Open Source - Common-Library Popup Menu Widget






From Project

Back to project page Common-Library.

License

The source code is released under:

Apache License

If you think the Android project Common-Library listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.morgan.library.widget;
/*from   www  . j  a  v a  2s  .co  m*/
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.graphics.drawable.ColorDrawable;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;

import com.morgan.library.R;
import com.morgan.library.model.SpinnerItem;

/**
 * ????View??????????????PopupWindow??????????ListView??
 * 
 * @author Morgan.Ji
 * 
 */
public class PopupMenuWidget {

  private Activity mContext;
  private ListView mListView;
  private PopupWindow mPopupWindow;
  private List<SpinnerItem> mPopupList = new ArrayList<SpinnerItem>();

  public PopupMenuWidget(Activity context) {
    this.mContext = context;
    View view = LayoutInflater.from(context).inflate(
        R.layout.popup_menu_widget_list, null);
    mListView = (ListView) view.findViewById(R.id.list);
    mListView.setAdapter(new PopupListAdapter());
    mListView.setFocusableInTouchMode(true);
    mListView.setFocusable(true);
    DisplayMetrics metrics = new DisplayMetrics();
    mContext.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    int width = 0;
    if (metrics.widthPixels >= 720) {
      width = 220;
    } else {
      width = 180;
    }
    mPopupWindow = new PopupWindow(view, width, LayoutParams.WRAP_CONTENT);
    mPopupWindow.setBackgroundDrawable(new ColorDrawable(
        android.R.color.white));
  }

  public PopupMenuWidget(Activity context, int width) {
    this.mContext = context;
    View view = LayoutInflater.from(context).inflate(
        R.layout.popup_menu_widget_list, null);
    mListView = (ListView) view.findViewById(R.id.list);
    mListView.setAdapter(new PopupListAdapter());
    mListView.setFocusableInTouchMode(true);
    mListView.setFocusable(true);
    mPopupWindow = new PopupWindow(view, width, LayoutParams.WRAP_CONTENT);
    mPopupWindow.setBackgroundDrawable(new ColorDrawable(
        android.R.color.white));
  }

  public void showAsDropDown(View parent) {
    mPopupWindow.showAsDropDown(parent, mContext.getResources()
        .getDimensionPixelSize(R.dimen.pop_xoff), mContext
        .getResources().getDimensionPixelSize(R.dimen.pop_yoff));
    mPopupWindow.setAnimationStyle(R.style.popup_window_menu);
    mPopupWindow.setFocusable(true);
    mPopupWindow.setOutsideTouchable(true);
    mPopupWindow.update();
  }

  public void addItems(List<SpinnerItem> popupList) {
    mPopupList.clear();
    mPopupList.addAll(popupList);
  }

  public void addItem(SpinnerItem popup) {
    mPopupList.add(popup);
  }

  public void dismiss() {
    mPopupWindow.dismiss();
  }

  public void setOnItemClickListener(OnItemClickListener listener) {
    mListView.setOnItemClickListener(listener);
  }

  class PopupListAdapter extends BaseAdapter {

    @Override
    public int getCount() {
      return mPopupList.size();
    }

    @Override
    public Object getItem(int position) {
      return mPopupList.get(position);
    }

    @Override
    public long getItemId(int position) {
      return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      ViewHolder holder = null;
      if (convertView == null) {
        holder = new ViewHolder();
        convertView = LayoutInflater.from(mContext).inflate(
            R.layout.popup_menu_widget_list_item, null);
        holder.mImgView = (ImageView) convertView
            .findViewById(R.id.popup_img);
        holder.mTextView = (TextView) convertView
            .findViewById(R.id.popup_txt);
        convertView.setTag(holder);
      } else {
        holder = (ViewHolder) convertView.getTag();
      }
      SpinnerItem popup = mPopupList.get(position);
      if (popup.isHideImg()) {
        holder.mImgView.setVisibility(View.GONE);
      } else {
        holder.mImgView.setVisibility(View.VISIBLE);
        holder.mImgView.setImageResource(popup.getResId());
      }
      holder.mTextView.setText(popup.getText());
      return convertView;
    }

    class ViewHolder {
      public ImageView mImgView;
      public TextView mTextView;
    }
  }

  public void changeItemImage(int position, int resourceId) {
    if (position < 0 || position >= mPopupList.size()) {
      return;
    }
    mPopupList.get(position).setResId(resourceId);
  }
}




Java Source Code List

com.morgan.library.app.APPContext.java
com.morgan.library.app.AppManager.java
com.morgan.library.app.BaseActivity.java
com.morgan.library.app.BaseFragmentActivity.java
com.morgan.library.app.BaseListActivity.java
com.morgan.library.app.BaseScreenShotActivity.java
com.morgan.library.app.CommonApplication.java
com.morgan.library.async.CustomAsyncTask.java
com.morgan.library.async.Destroyable.java
com.morgan.library.async.IFeedback.java
com.morgan.library.async.TaskManager.java
com.morgan.library.model.NetResult.java
com.morgan.library.model.SpinnerItem.java
com.morgan.library.model.WeatherType.java
com.morgan.library.model.Weather.java
com.morgan.library.net.ApiClient.java
com.morgan.library.net.ApiManager.java
com.morgan.library.net.ApiUrl.java
com.morgan.library.net.IApiClient.java
com.morgan.library.net.JsonUtils.java
com.morgan.library.net.MockApiClient.java
com.morgan.library.service.LocationManager.java
com.morgan.library.service.WeatherManager.java
com.morgan.library.snippet.CookieShare.java
com.morgan.library.snippet.CustomService.java
com.morgan.library.snippet.ExceptionCatcher.java
com.morgan.library.snippet.ProxyUsage.java
com.morgan.library.snippet.SocketClient.java
com.morgan.library.snippet.SocketServer.java
com.morgan.library.snippet.UDPClient.java
com.morgan.library.snippet.UDPServer.java
com.morgan.library.snippet.XMLAnalyze.java
com.morgan.library.task.GetWeatherTask.java
com.morgan.library.utils.AppUtils.java
com.morgan.library.utils.DateUtils.java
com.morgan.library.utils.DensityUtils.java
com.morgan.library.utils.FileUtils.java
com.morgan.library.utils.GB2Alpha.java
com.morgan.library.utils.HttpClientUtil.java
com.morgan.library.utils.HttpClientUtils.java
com.morgan.library.utils.HttpURLUtil.java
com.morgan.library.utils.ImageUtils.java
com.morgan.library.utils.KeyBoardUtils.java
com.morgan.library.utils.LocationUtils.java
com.morgan.library.utils.Logger.java
com.morgan.library.utils.NetUtils.java
com.morgan.library.utils.PhoneUtils.java
com.morgan.library.utils.SDCardUtils.java
com.morgan.library.utils.StrUtils.java
com.morgan.library.widget.AutoHideMenuWidget.java
com.morgan.library.widget.BadgeView.java
com.morgan.library.widget.CityPickerWidget.java
com.morgan.library.widget.CustomGridView.java
com.morgan.library.widget.CustomListView.java
com.morgan.library.widget.CustomToast.java
com.morgan.library.widget.CustomViewPager.java
com.morgan.library.widget.DatePickerWidget.java
com.morgan.library.widget.DirectionScrollView.java
com.morgan.library.widget.FallBallView.java
com.morgan.library.widget.HeightPickerWidget.java
com.morgan.library.widget.InterceptPressLayout.java
com.morgan.library.widget.ItalicTextView.java
com.morgan.library.widget.PopupMenuWidget.java
com.morgan.library.widget.PullToRefreshListView.java
com.morgan.library.widget.ScreenShotView.java
com.morgan.library.widget.SexPickerWidget.java
com.morgan.library.widget.SlideUpOpenWidget.java
com.morgan.library.widget.SwipeListView.java
com.morgan.library.widget.TimePickerWidget.java
com.morgan.library.widget.TouchZoomImageView.java
com.morgan.library.widget.WaitScreenWidget.java
com.morgan.library.widget.WebViewDialog.java
com.morgan.library.widget.WeightPickerWidget.java
com.morgan.library.widget.calendar.CalendarGridView.java
com.morgan.library.widget.calendar.CalendarScrollView.java
com.morgan.library.widget.calendar.CalendarViewFlipper.java
com.morgan.library.widget.calendar.CalendarWidget.java
com.morgan.library.widget.numberpicker.NumberPicker.java
com.morgan.library.widget.numberpicker.Scroller.java
com.morgan.library.widget.slidemenu.ScrollDetectorFactory.java
com.morgan.library.widget.slidemenu.ScrollDetectors.java
com.morgan.library.widget.slidemenu.SlideMenu.java