PopupWindow泡泡效果

本文详细记录了如何在手机应用中使用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中的按钮事件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值