博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在弹出的菜单中模仿微信的右上角
阅读量:6657 次
发布时间:2019-06-25

本文共 2907 字,大约阅读时间需要 9 分钟。

采用PopupWindow在弹出的菜单右上角实现仿微信。

效果如下面的:

popupWindow代码例如以下:

import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.stcyclub.e_community.R;import android.app.Activity;import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.view.ViewGroup.LayoutParams;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.SimpleAdapter;public class ChangeLifeHallWindow extends PopupWindow {	private View mMenuView;	public ChangeLifeHallWindow(final Activity context,OnClickListener itemsOnClick) {		super(context);		LayoutInflater inflater = (LayoutInflater) context				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);		mMenuView = inflater.inflate(R.layout.change_life_hall_mune, null);		ListView life_hall_list = (ListView) mMenuView.findViewById(R.id.life_hall_list);				List
lts = new ArrayList
(); lts.add("aaaaa"); lts.add("bbbb"); lts.add("cccc"); lts.add("sssss"); List
> list1 = new ArrayList
>(); for ( int i=0;i< lts.size() ;i++) { Map
m= new HashMap
(); m.put( "title" , lts.get(i)); list1.add(m); } life_hall_list.setAdapter(new SimpleAdapter(context, list1, R.layout.textview_item, new String[]{"title"}, new int[]{R.id.tv_item})); int h = context.getWindowManager().getDefaultDisplay().getHeight(); int w = context.getWindowManager().getDefaultDisplay().getWidth(); //设置button监听 //设置SelectPicPopupWindow的View this.setContentView(mMenuView); //设置SelectPicPopupWindow弹出窗口的宽 this.setWidth(w/2+50); //设置SelectPicPopupWindow弹出窗口的高 this.setHeight(LayoutParams.WRAP_CONTENT); //设置SelectPicPopupWindow弹出窗口可点击 this.setFocusable(true); //设置SelectPicPopupWindow弹出窗口动画效果 this.setAnimationStyle(R.style.mystyle); //实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0000000000); //设置SelectPicPopupWindow弹出窗口的背景 this.setBackgroundDrawable(dw); //mMenuView加入OnTouchListener监听推断获取触屏位置假设在选择框外面则销毁弹出框 mMenuView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { int height = mMenuView.findViewById(R.id.pop_layout).getTop(); int y=(int) event.getY(); if(event.getAction()==MotionEvent.ACTION_UP){ if(y
布局代码例如以下:

调用代码例如以下:

//调用
ChangeLifeHallWindow mLifeHallWindow = new ChangeLifeHallWindow(RobNewActivity.this, itemsOnClick);mLifeHallWindow.showAtLocation(RobNewActivity.this.findViewById(R.id.base_mune), Gravity.TOP|Gravity.RIGHT, 10, 230); //设置layout在PopupWindow中显示的位置//为弹出窗体实现监听类 private OnClickListener itemsOnClick = new OnClickListener(){ public void onClick(View v) { mLifeHallWindow.dismiss(); } };
 

版权声明:本文博主原创文章。博客,未经同意不得转载。

你可能感兴趣的文章
谈谈数据库的ACID
查看>>
功能风格:Lambda函数和地图
查看>>
RelativeLayout+include产生的问题
查看>>
Linux(RadHat)基础学习—了解SELinux
查看>>
CountDownLatch和CyclicBarrier模拟同时并发请求
查看>>
推荐一款快速开发平台,web中最好的快速开发平台
查看>>
来谈谈绿萝算法2.0对SEO产生的影响
查看>>
即将开源 | 2亿用户背后的Flutter应用框架Fish Redux
查看>>
区块链教程Fabric1.0源代码分析Ledger blkstorage block文件存储
查看>>
重构linux系统
查看>>
JAVAScript强大的框架:Jquery(一)
查看>>
网络技术工作在哪里
查看>>
玩转Linux - shell 编程基础(二)
查看>>
我的友情链接
查看>>
马哥2016全新Linux+Python高端运维班第三周作业
查看>>
!.NET 4.0并行计算深入解读(FOR,FOREACH,Invoke)
查看>>
NFinal 揭秘之控制器
查看>>
apxs动态安装扩展模块
查看>>
java-第八章-幸运抽奖-实现注册功能
查看>>
连接池和数据源
查看>>