登录
首页 » Android » Android 自定义弹出式菜单栏源码下载

Android 自定义弹出式菜单栏源码下载

于 2022-10-12 发布 文件大小:19.74 kB
0 244
下载积分: 2 下载次数: 1

代码说明:

Android Custom Menu 弹出窗口式自定义菜单栏的实例源码,运行后通过轻触手机的菜单键,来唤出菜单窗口,再次点击菜单键,自定义弹出对话框则隐藏,菜单是布局在对话框窗口中的,在本例中,自定义弹出窗口继承PopupWindow,并封装有封装GridView组件和View 组件,GridView 为每个Item设置监听事件方法,部分代码先睹为快:   public CustomMenu(Activity activity, List menus) {   super(activity);   //View 样式文件R.layout.menu   view = activity.getLayoutInflater().inflate(R.layout.menu, null);   //实例化GridView组件   gvMenu = (GridView)view.findViewById(R.id.gv_menu);   //相关参数设置   this.setContentView(view);   this.setWidth(LayoutParams.FILL_PARENT);   this.setHeight(LayoutParams.WRAP_CONTENT);   //图片获取   Drawable drawable = activity.getResources().getDrawable(R.drawable.selector_focused_shape);   //相关特效设置   this.setBackgroundDrawable(drawable);   this.setAnimationStyle(R.style.PopupAnimation);   this.setFocusable(true);   //设置相关OnKeyListener事件   gvMenu.setOnKeyListener(new OnKeyListener() {   @Override   public boolean onKey(View v, int keyCode, KeyEvent event) {   if ((keyCode == KeyEvent.KEYCODE_MENU)&&(isShowing())) {    dismiss();//关闭P

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 高仿网易客户端UI
    Android应用源码之高仿网易客户端UI(tabhost)
    2023-05-17 18:35:03下载
    积分:1
  • 图像过滤器
    图像处理的不同的图像筛选器选项。直方图是分布的以图形方式表示数据。它是一个连续的变量的概率分布的估计,最初是由卡尔 · 皮尔森。[1] 的直方图是列表的频率,示相邻矩形,竖立在离散的时间间隔 (箱子),面积的观测频率成正比的间隔中的表示形式。矩形的高度也是相等的时间间隔,即频率间隔的宽度除以频率密度。直方图的总面积等于数据的数量。
    2023-06-06 01:30:06下载
    积分:1
  • Android_Library_Giri
    axure rp 模板库 具体的还没用过,不知道优劣,大家可以参考下-Axture some instances, specific not used, do not know the pros and cons, we can refer to(axure rp)
    2013-07-05 15:29:24下载
    积分:1
  • android手机图片读取
    得到android手机端所有照片的集合,类似照片管理器
    2022-03-16 10:29:57下载
    积分:1
  • Android选择系统相册或拍照上传源码
    Android选择系统相册或拍照上传源码,实现上传 ,工程完整 ,Android选择系统相册或拍照上传源码,节约开发成本,
    2023-06-15 02:20:06下载
    积分:1
  • IGetDoubled
    Configuration Test extends Android Test Case Source Code for Andriod.
    2014-01-17 11:26:23下载
    积分:1
  • Android socket大文件续传-上传操作断点续传
    Android基于socket文件续传实例,本实例演示的是在上传大文件时的断点续传功能,类似于下载文件,在业务bean中,定义了多个实现此功能的方法,比如获取每条线程已经下载的文件长度、保存上传文件信息、当文件上传完成后,删除对应的上传记录等。   上传过程中,适时显示上传进度,用一个经典的进度条来表现,如截图所示,单击按钮后,即可启动上传进程。
    2023-08-27 20:15:03下载
    积分:1
  • 微信公众平台开发模式(JAVA) SDK/微信app
    【核心代码】package com.gson;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Date;import java.util.Properties;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletInputStream;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import com.gson.bean.Articles;import com.gson.bean.InMessage;import com.gson.bean.OutMessage;import com.gson.bean.TextOutMessage;import com.gson.inf.MessageProcessingHandler;import com.gson.util.Tools;import com.gson.util.XStreamFactory;import com.thoughtworks.xstream.XStream;/** * 请求拦截 * * @author GodSon * */public class WeChatFilter implements Filter { private final Logger logger = Logger.getLogger(WeChatFilter.class); private String _token; private String conf = "classPath:wechat.properties"; private String defaultHandler = "com.gson.inf.DefaultMessageProcessingHandlerImpl"; private Properties p; @Override public void destroy() { logger.info("WeChatFilter已经销毁"); } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; Boolean isGet = request.getMethod().equals("GET"); String path = request.getServletPath(); String pathInfo = path.substring(path.lastIndexOf("/")); if (pathInfo == null) { response.getWriter().write("error"); } else { _token = pathInfo.substring(1); if (isGet) { doGet(request, response); } else { doPost(request, response); } } } private void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml"); OutMessage oms = new OutMessage(); ServletInputStream in = request.getInputStream(); // 转换微信post过来的xml内容 XStream xs = XStreamFactory.init(false); xs.alias("xml", InMessage.class); String xmlMsg = Tools.inputStream2String(in); logger.debug("输入消息:[" xmlMsg "]"); InMessage msg = (InMessage) xs.fromXML(xmlMsg); // 获取自定消息处理器,如果自定义处理器则使用默认处理器。 String handler = p.getProperty("MessageProcessingHandlerImpl"); if (handler == null) handler = defaultHandler; try { // 加载处理器 Class clazz = Class.forName(handler); MessageProcessingHandler processingHandler = (MessageProcessingHandler) clazz.newInstance(); // 取得消息类型 String type = msg.getMsgType(); Method mt = clazz.getMethod(type "TypeMsg", InMessage.class); oms = (OutMessage) mt.invoke(processingHandler, msg); if (oms == null) { oms = new TextOutMessage(); ((TextOutMessage) oms).setContent("系统错误!"); } setMsgInfo(oms,msg); } catch (Exception e) { logger.error(e); oms = new TextOutMessage(); ((TextOutMessage) oms).setContent("系统错误!"); try { setMsgInfo(oms,msg); } catch (Exception e1) { logger.error(e); } } // 把发送发送对象转换为xml输出 xs = XStreamFactory.init(true); xs.alias("xml", oms.getClass()); xs.alias("item", Articles.class); String xml = xs.toXML(oms); logger.debug("输出消息:[" xml "]"); response.getWriter().write(xml); } private void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String signature = request.getParameter("signature");// 微信加密签名 String timestamp = request.getParameter("timestamp");// 时间戳 String nonce = request.getParameter("nonce");// 随机数 String echostr = request.getParameter("echostr");// // 验证 if (Tools.checkSignature(_token, signature, timestamp, nonce)) { response.getWriter().write(echostr); } } private void setMsgInfo(OutMessage oms,InMessage msg) throws Exception { // 设置发送信息 Class outMsg = oms.getClass().getSuperclass(); Field CreateTime = outMsg.getDeclaredField("CreateTime"); Field ToUserName = outMsg.getDeclaredField("ToUserName"); Field FromUserName = outMsg.getDeclaredField("FromUserName"); ToUserName.setAccessible(true); CreateTime.setAccessible(true); FromUserName.setAccessible(true); CreateTime.set(oms, new Date().getTime()); ToUserName.set(oms, msg.getFromUserName()); FromUserName.set(oms, msg.getToUserName()); } /** * 启动的时候加载wechat.properties配置 可以在过滤器配置wechat.properties路径 */ @Override public void init(FilterConfig config) throws ServletException { String cf = config.getInitParameter("conf"); if (cf != null) { conf = cf; } String classPath = this.getClass().getResource("/").getPath().replaceAll("%20", " "); conf = conf.replace("classPath:", classPath); p = new Properties(); File pfile = new File(conf); if (pfile.exists()) { try { p.load(new FileInputStream(pfile)); } catch (FileNotFoundException e) { logger.error("未找到wechat.properties", e); } catch (IOException e) { logger.error("wechat.properties读取异常", e); } } logger.info("WeChatFilter已经启动!"); }}
    2014-01-21下载
    积分:1
  • RTSP播放器源码 Android平台
    实现RTSP的视频播放器,Java源码,用于Android平台。是完整的项目文件,编译后可直接运行。内有功能显示界面的图片。可用于android手机上。
    2022-03-22 12:19:18下载
    积分:1
  • android 应用程序源
    android 开发实例 1、 图片浏览器(Picture Viewer) 2 、文件浏览器(File Browser) 3 、通讯录(Contact) 4 、任务管理器(Task Manager) 5 、音乐播放器(Rock Player) 6 、天气预报(Android Weather Forecast) 7 、多媒体播放器(Android Media Player) 8、短信语音播报(Speak Message Service) 9、手机远程监控(Cam Monitor) 10、贪吃蛇游戏(Snake)
    2022-08-12 16:48:38下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载