`

PopupWindow泡泡效果

 
阅读更多

在使用手机的时候看到这个效果,上网查了一下,是使用了PopupWindow实现的

在此记录一下:


主要代码:

 

import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
import android.app.ListActivity;  
import android.content.Context;  
import android.os.Bundle;  
import android.view.Gravity;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.WindowManager;  
import android.widget.AdapterView;  
import android.widget.AdapterView.OnItemClickListener;  
import android.widget.ListView;  
import android.widget.PopupWindow;  
import android.widget.SimpleAdapter;  
  
public class PopActivity extends ListActivity implements OnItemClickListener{  
    private List<Map<String,Object>> list ;  
    ListView listview;  
    PopupWindow pw = null;  
    //头像的Id数组  
    int head[]  = {R.drawable.image1,R.drawable.image2,R.drawable.image3,  
            R.drawable.image4,R.drawable.image5};  
      
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
       listview =  getListView();  
        initData();//生成几条记录  
        SimpleAdapter adapter =new SimpleAdapter(this, list,R.layout.people ,new String []{"head","name","num"} , new int []{R.id.head,R.id.text,R.id.num});  
       setListAdapter(adapter);  
      listview.setOnItemClickListener(this);  
    }  
    public void initData(){  
        list = new ArrayList<Map<String,Object>>();  
        for(int i = 0;i<5;i++){  
            Map<String ,Object> map  = new HashMap<String, Object>();  
            map.put("head", head[i]);  
            map.put("name","第"+i+"位用户");  
            map.put("num","12445533"+i);  
            list.add(map);  
        }  
    }  
    @Override  
    public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {  
        // TODO Auto-generated method stub  
        LayoutInflater factory = LayoutInflater.from(PopActivity.this);  
        final View textEntryView = factory.inflate(R.layout.paopao_alert_dialog, null);  
        //获取WindowManager对象  
        WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);     
        int envWidth = wm.getDefaultDisplay().getWidth();     
        int envHeight = wm.getDefaultDisplay().getHeight();    
        if(pw == null)  
        {  
            pw = new PopupWindow(textEntryView);   
            pw.showAtLocation(v, Gravity.LEFT,0,0); //在父视图的左上方显示  
        }else if(!pw.isShowing()){  
            pw = new PopupWindow(textEntryView);   
            pw.showAtLocation(v, Gravity.LEFT,0,0);   
        }  
        int pwH = 70;  
        int pwW = 166;  
        int y = -envHeight/2+v.getTop() + pwH;  
        pw.update(0,y,pwW,pwH); //更新位置。  
        textEntryView.findViewById(R.id.phone).setOnClickListener(new View.OnClickListener() {  
            public void onClick(View v) {  
                // TODO Auto-generated method stub  
                pw.dismiss();  
            }  
  
        });  
    }  
}  
 

 

主要就是OnItemClick()方法中的实现,获取WindowManager ,得到一个PopupWindow对象,然后显示出来,当然在实际中要去响应PopupWindow中的按钮事件了。

 

From : http://blog.csdn.net/shaojie519/article/details/6642299

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics