package cn.uc.uctranslateplugin.widget;
import java.util.ArrayList;
import cn.uc.uctranslateplugin.R;
import cn.uc.uctranslateplugin.R.dimen;
import cn.uc.uctranslateplugin.R.id;
import cn.uc.uctranslateplugin.R.layout;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
import android.view.Gravity;
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.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
public class PopMenu {
private ArrayList<String> itemList;
private Context context;
private PopupWindow popupWindow;
private ListView listView;
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
public PopMenu(Context context) {
this.context = context;
itemList = new ArrayList<String>(5);
View view = LayoutInflater.from(context).inflate(
R.layout.layout_popmenu, null);
listView = (ListView) view.findViewById(R.id.listView);
listView.setAdapter(new PopAdapter());
listView.setFocusableInTouchMode(true);
listView.setFocusable(true);
if (getApiLev() > 8) {
listView.setOverScrollMode(View.OVER_SCROLL_NEVER);
}
popupWindow = new PopupWindow(view, context.getResources()
.getDimensionPixelSize(R.dimen.popmenu_width), context
.getResources().getDimensionPixelSize(R.dimen.popmenu_heigh));
popupWindow = new PopupWindow(view, context.getResources()
.getDimensionPixelSize(R.dimen.popmenu_width),
LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new BitmapDrawable(context
.getResources()));
}
public void setOnItemClickListener(OnItemClickListener listener) {
listView.setOnItemClickListener(listener);
}
public void addItems(String[] items) {
for (String s : items)
itemList.add(s);
}
public void addItem(String item) {
itemList.add(item);
}
/**
* 获取父控件的位置y-window的高度 = 应该显示的y坐标. x这里设置为center 不刻意指定坐标 控件坐标永远是 左上角坐标!
*
* @param parent
*/
public void showUp(View parent) {
int[] location = new int[2];
parent.getLocationOnScreen(location);
popupWindow.setAnimationStyle(R.style.AnimationPopup);
popupWindow.showAtLocation(parent, Gravity.CENTER_HORIZONTAL
| Gravity.TOP, 0, location[1] - popupWindow.getHeight() + 20);
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.update();
}
public void showAsDropDown(View parent) {
popupWindow.showAsDropDown(parent, context.getResources()
.getDimensionPixelSize(R.dimen.popmenu_xoff),
context.getResources().getDimensionPixelSize(R.dimen.popmenu_yoff));
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.update();
}
public void dismiss() {
popupWindow.dismiss();
}
private final class PopAdapter extends BaseAdapter {
@Override
public int getCount() {
return itemList.size();
}
@Override
public Object getItem(int position) {
return itemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.item_pomenu, null);
holder = new ViewHolder();
convertView.setTag(holder);
holder.groupItem = (TextView) convertView
.findViewById(R.id.textView);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.groupItem.setText(itemList.get(position));
return convertView;
}
private final class ViewHolder {
TextView groupItem;
}
}
public static int getApiLev() {
int version = 0;
version = android.os.Build.VERSION.SDK_INT;
Log.e("apilev", version + "'");
return version;
}
}
public void chooseLanguage(View view) {
gpopMenu.showAsDropDown(view);
}
private void initPopMenu() {
gpopMenu = new PopMenu(gcontext);
menus = new String[] { "English", "AR", "ES", "FR", "FA", "PT", "VI",
"RU", "ID", "ZH-TW" };
gpopMenu.addItems(menus);
gpopMenu.setOnItemClickListener(popmenuItemClickListener);
}
private OnItemClickListener popmenuItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
languagetype = position;
DataStoreUtil.putInt(gcontext, "LANGUAGE", languagetype);
btn_chooselanguage.setText(menus[position]);
startTranslate(translatemethod);
gpopMenu.dismiss();
}
};
动画地址
http://blog.youkuaiyun.com/sfshine/article/details/8876891