首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

PopupWindow+listItem 泡沫效果

2012-07-24 
PopupWindow+listItem 泡泡效果?package com.myimport android.app.Activityimport android.os.Bundlei

PopupWindow+listItem 泡泡效果


PopupWindow+listItem 泡沫效果
?
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;
??????? }
??? }
}

1 楼 lixiaolongxuexi 2011-10-22   好像有点问题哦。

热点排行