android 模仿uc标签页,模仿UCweb菜单 - 白羽雕弓 - 博客园

UCWeb的菜单看起来不错,自己想模仿做一个,苦恼一直没有思路

google了几天,终于找到一个帖子  http://www.eoeandroid.com/viewthread.php?tid=28824

按照上面提供的思路实现了

1、保留menu按键作用

2、用popupwindow作为菜单显示容器

3、用GridView显示所有子菜单

代码

1、布局文件

popupwindow.xml

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:background="#50000000"

android:layout_height="fill_parent"

android:gravity="bottom|center_horizontal">

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="320dip"

android:background="@drawable/bkg2"

android:id="@+id/popdialog"

android:layout_height="250dip"

android:gravity="center_vertical|center_horizontal"

>

android:id="@+id/gridview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:numColumns="4"

android:verticalSpacing="10dip"

android:horizontalSpacing="10dip"

android:stretchMode="columnWidth"

android:gravity="center"

/>

item_menu.xml

android:id="@+id/RelativeLayout_Item"

android:layout_width="fill_parent" android:layout_height="wrap_content"

android:paddingBottom="5dip">

android:layout_centerHorizontal="true"

android:layout_width="40dip"

android:layout_height="40dip">

android:id="@+id/item_text"

android:layout_centerHorizontal="true"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

style="@style/Text.Location"

android:text="选项">

2、用popupwindow作为菜单显示容器

View view = this.getLayoutInflater().inflate(R.layout.popwindowdemo, null);

pop = new PopupWindow(view,320,450);//大小设置为全屏幕,这里硬编码的,可修改

pop.setOutsideTouchable(false);

pop.setBackgroundDrawable(new BitmapDrawable());

pop.setFocusable(true);//如果不加这个,Grid不会响应ItemClick

pop.setTouchInterceptor(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

if (event.getY()<240){ //这里处理,当点击gridview以外区域的时候,菜单关闭

if (pop.isShowing())

pop.dismiss();

}

Log.d("Demo", "popupWindow::onTouch >>> view: "

+ v + ", event: " + event);

return false;

}

});

3、初始化gridview

/** 菜单图片 **/

int[] menu_image_array = { R.drawable.menu_search,

R.drawable.menu_filemanager, R.drawable.menu_downmanager,

R.drawable.menu_fullscreen, R.drawable.menu_inputurl,

R.drawable.menu_bookmark, R.drawable.menu_bookmark_sync_import,

R.drawable.menu_sharepage, R.drawable.menu_quit,

R.drawable.menu_nightmode, R.drawable.menu_refresh,

R.drawable.menu_more };

/** 菜单文字 **/

String[] menu_name_array = { "搜索", "文件管理", "下载管理", "全屏", "网址", "书签",

"加入书签", "分享页面", "退出", "夜间模式", "刷新", "更多" };

/**

* 构造菜单Adapter

*

* @param menuNameArray

* 名称

* @param imageResourceArray

* 图片

* @return SimpleAdapter

*/

private SimpleAdapter getMenuAdapter(String[] menuNameArray,

int[] imageResourceArray) {

ArrayList> data = new ArrayList>();

for (int i = 0; i < menuNameArray.length; i++) {

HashMap map = new HashMap();

map.put("itemImage", imageResourceArray[i]);

map.put("itemText", menuNameArray[i]);

data.add(map);

}

SimpleAdapter simperAdapter = new SimpleAdapter(this, data,

R.layout.item_menu, new String[] { "itemImage", "itemText" },

new int[] { R.id.item_image, R.id.item_text });

return simperAdapter;

}

menuGrid = (GridView) view.findViewById(R.id.gridview);

menuGrid.setAdapter(getMenuAdapter(menu_name_array, menu_image_array));

4、注册Menu弹起事件

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// TODO Auto-generated method stub

pop.showAtLocation(findViewById(R.id.mainfrm), Gravity.CENTER|Gravity.BOTTOM, 0, 0);

return false;//super.onCreateOptionsMenu(menu);

}

5、注册menu子菜单单击事件

menuGrid.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView> arg0, View arg1, int arg2,

long arg3) {

Log.v("Demo", "menuGrid.setOnItemClickListener: "+arg2+" "+arg3);

Toast.makeText(UIMenu.this, "Click"+arg2, Toast.LENGTH_SHORT).show();

if (pop.isShowing()) //关闭菜单

pop.dismiss();

}

});

6、界面截图

5246762_1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ipv6路由协议配置_IPV6寻址,标头和路由协议

ipv6路由协议配置The IPV6 address is 128 bits. Whereas IPV4 is represented by 4 groups of decimal numbers, same IPV6 is represented by 8 groups of hexadecimal numbers. The example of IPV6 address is 2001:0db8:85a3:0000:0000:8a2e:0370:7334. IPV6地址是128位。…

rpc框架

Motan&#xff0c;dubbo转载于:https://www.cnblogs.com/zhangshiwen/p/5980886.html

android webview 监听js,Android webview与js的数据交互

项目要用到Webview和js交互&#xff0c;查了查以前的项目感觉还是有必要整理下的。简单描述下项目中用到的地方&#xff0c;比如说在web页需要用到登录的地方点击登录跳转到APP原生登录界面去登录&#xff0c;点击web页的拨打电话弹出原生dialog询问是否拨打&#xff0c;点击we…

c ++查找字符串_C ++异常处理| 查找输出程序| 套装1

c 查找字符串Program 1: 程序1&#xff1a; #include <iostream>using namespace std;int main(){try {int num1 10;int num2 0;int res 0;res num1 / num2;}catch (exception e) {cout << "Exception: Divide By Zero" << endl;}return 0;}O…

python的repr和str有什么不同_str()和repr()的异同

str()函数和repr()函数&#xff0c;都是Python内置的标准函数。这两个函数都是根据参数对象返回一个字符串&#xff0c;但是又有一些不一样的地方。我们在使用的时候&#xff0c;常常搞混&#xff0c;倾向于使用简单明了的str()函数&#xff0c;而搞不清楚为什么还有一个不知所…

android web通讯录,Android手机开发之通讯录

Android手机开发——通讯录实现增加、查询、修改、删除的功能&#xff0c;输入联系人信息&#xff0c;点击“添加”按钮&#xff0c;可以添加联系人信息到数据库&#xff1b;点击“查询”按钮&#xff0c;会发现添加的联系人信息显示在界面中&#xff1b;重新输入联系人电话&am…

有关UITableView--cell复用问题

近来用Tableview做了一个九宫格。过程中碰到了两个cell复用问题。 问题一&#xff1a; 在cell中为button添加addTarget点击事件时&#xff0c;出现后面的cell会重叠它前面cell的事件。代码如下&#xff1a; C代码 static NSString *CellWithIdentifier "DiscoverHomeTab…

python客户端和服务端实验_结合服务器和客户端python

我正在尝试使用python(稍后可能用c语言)和TCP套接字制作一个本地网络聊天程序。我的目的是让服务器监听当前计算机的地址以获取传入消息&#xff0c;并将这些消息转发给客户端(我现在还不确定)。客户端将是一个简单的gui&#xff0c;可以通过本地连接向活动服务器发送消息。实际…

python常用语法和示例_C语言切换案例教程,语法,示例和规则

python常用语法和示例使用默认情况下的决策 (Decision making using switch-case-default) Many times in our daily lives, we face conditions where we are required to choose between a number of alternatives rather than just two or three. For example, which school…

android so abi适配,Android NDK学习(六): so文件兼容之abiFilters的使用

最近项目中遇到了要使用JavaCV的情况&#xff0c;涉及到了abi兼容的选择。因为如果全部都适配的话&#xff0c;包很大&#xff0c;这样兼容那些用户数极少的cpu就很不划算&#xff0c;所以我只适配了armeabi-v7a这一个。但是今天在x64-v8a的模拟器上看的时候&#xff0c;提示我…

python中doc=parased.getroot()_python中执行sed命令操作源文件时出现错误

我想在python中执行一个sed命令&#xff0c;第一种方法直接指定文件时&#xff0c;可以正确输出结果&#xff0c;但是第二种我打开文件操作的时候就有问题&#xff0c;不知道什么原因&#xff0c;求高手解答&#xff1f;(1)>>> sedcmd"sed -n \s/{//g; p\ /qye/p…

JavaScript基础之Number对象和Math对象

2019独角兽企业重金招聘Python工程师标准>>> //Math对象//属性float Math.E; //返回自然对数的底数e&#xff0c;约2.718float Math.LN2; //返回2的自然对数&#xff0c;约0.693float Math.LN10; //返回10的自然对数&#xff0c;约2.302fl…

c++ stl 获取最小值_如何在C ++ STL中找到向量的最小/最小元素?

c stl 获取最小值Given a vector and we have to minimum/smallest element using C STL program. 给定一个向量&#xff0c;我们必须使用C STL程序最小/最小元素。 寻找向量的最小元素 (Finding smallest element of a vector) To find a smallest or minimum element of a …

android studio panic,Android Studio模拟器PANIC错误

Android Studio模拟器突然停止工作.当我尝试运行虚拟设备时,我在事件日志中收到以下错误.模拟器:PANIC:找不到AVD系统路径.请定义ANDROID_SDK_ROOT仿真器:处理完成,退出代码为1所以我检查了ANDROID_SDK_ROOT环境变量设置的值,它是空的.所以我把它设置为/Users/{username}/Libra…

linux特殊权限之访问权限

特殊权限如/etc/passwd:sSuid:普通用户以管理员身份运行命令&#xff08;chmod us FILE、chmod u-s FILE&#xff09;如果FILE本身原来就有执行权限&#xff0c;SUID显示为s&#xff1b;否则显示SSgid:基本组以管理组身份运行命令&#xff08;chmod gs FILE、chmod g-s FILE&am…

vb.net变量值变化触发事件_Angular变化检测的理解

获取脏检查的时机Angular 使用NgZone获取变化的通知&#xff0c;然后进行全面的变化检测&#xff0c;进而更新Dom脏检查的过程Angular的数据流是自顶而下&#xff0c;从父组件到子组件单项流动&#xff0c;单项数据流保证了高效可预测的变化检测。尽管检查了父组件之后&#xf…

python 算术右移_Python算术序列| 竞争编码问题

python 算术右移Question: 题&#xff1a; In mathematics, when in an arithmetic sequence is a sequence of numbers such that the difference between the consecutive terms is constant then it is called arithmetic constant. 在数学中&#xff0c;当在算术序列中是…

Android8内测申请,小米 6 安卓 8.0 来了 内测开始招募

Android 8.0 已经正式发布多时&#xff0c;目前不少厂商已经启动了旗下进行的 Android 8.0 适配计划。但令人纳闷的是&#xff0c;一向对系统升级比较热心的小米却迟迟没有动静。好消息是&#xff0c;此前网友曝光的消息显示&#xff0c;MIUI 已经悄然在官方论坛中招募小米 6 的…

My linux

为什么80%的码农都做不了架构师&#xff1f;>>> 1.linux 命令方式修改机器名称 # hostname newHostName # vi /etc/sysconfig/network 修改或增加配置&#xff1a;hostnamenewHostName # vi /etc/hosts 修改对应的本地HOST映射 xx.xxx.xxx.xxx newHostName 2.Redha…

狂神说es笔记_人教版七上英语Unit5电子课本音频+课堂笔记+课后同步习题

1人教 七上英语Unit5单词七年级英语上册Unit 5单词默写1做&#xff1b;干(助动词)__________2做&#xff0c;干(助动词第三人称单数形式)__________3有__________4网球__________5球__________6乒乓球______7球棒&#xff1b;球拍__________8(英式)足球____________________9排…