package com.my;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
import android.widget.Toast;
public class PopupwindowFoListItemActivity extends Activity implements OnItemClickListener {
String[] data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initData();
setContentView(initView());
}
private void initData() {
data = new String[40];
for (int i = 0; i < data.length; i++) {
data[i] = "item" + i;
}
}
private LinearLayout initView() {
LinearLayout linearLayout = new LinearLayout(this);
ListView listView = new ListView(this);
listView.setAdapter(new MyAdapter());
listView.setOnItemClickListener(this);
//设置listview的触摸监听事件 当用户触摸 Popupwindow窗口以外的东西时 Popwindow隐藏
listView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("dbug","onTouch");
if(popupWindow!=null&&popupWindow.isShowing())
{
popupWindow.dismiss();
popupWindow =null;
}
return false;
}
});
linearLayout.addView(listView);
return linearLayout;
}
PopupWindow popupWindow;
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(this,""+position,Toast.LENGTH_SHORT).show();
LinearLayout layout = (LinearLayout)View.inflate(this, R.layout.main, null);
if (popupWindow == null) {
popupWindow = new PopupWindow(layout);
popupWindow.showAtLocation(view, Gravity.NO_GRAVITY, 0, 0);
//设置窗口的宽度和高度
popupWindow.setWidth(view.getWidth());
popupWindow.setHeight(view.getHeight());
// // requestWindowFeature(Window.FEATURE_NO_TITLE);没有标题时: int y =
// view.getTop()+38;
// // 当requestWindowFeature()为默认值时:int y = view.getTop()+75;
// //当设置为全屏时int y = view.getTop();由此title部分为75-38=37 title上面部分为38
//得到窗口y轴的值
int y = view.getTop() + 75;
//设置窗口的动画
popupWindow.setAnimationStyle(R.style.AnimationPreview);
// popupWindow.setFocusable(true);
popupWindow.update(0, y, view.getWidth(), view.getHeight());
} else {
popupWindow.dismiss();
popupWindow = null;
}
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout linearLayout = (LinearLayout)View.inflate(PopupwindowFoListItemActivity.this,R.layout.listitem, null);
TextView textView =(TextView)linearLayout.findViewById(R.id.tv1);
textView.setText(data[position]);
return linearLayout;
}
}
}