使用popupwindow设计出popupmenu效果的菜单

1、popupwindow的布局文件:menu_layout.xml

<?xml version="1.0" encoding="utf-8"?>

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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<ListView

android:id="@+id/listView"

android:layout_width="80dp"

android:layout_height="wrap_content"

android:background="@drawable/rectangle"

android:divider="#d8d8d8"

android:dividerHeight="1px" >

</ListView>

</RelativeLayout>

2、菜单项的布局文件:menu_item.xml

<?xml version="1.0" encoding="utf-8"?>

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

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

<TextView

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="30dp"

android:layout_centerInParent="true"

android:gravity="center"

android:textColor="#FFFFFF"

android:textSize="10.5sp"

android:text="dsss"/>

</RelativeLayout>

3、popupwindow的背景设置:rectangle.xml

<?xml version="1.0" encoding="utf-8"?>

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

android:shape="rectangle" >

<!-- 定义使用渐变色填充 -->

<!-- <gradient

android:angle="270"

android:endColor="#000000"

android:startColor="#000000" /> -->

<!-- 定义几何形状的内边距 -->

<padding

android:bottom="2dp"

android:left="2dp"

android:right="2dp"

android:top="2dp" />

<!-- 定义几何形状的大小 -->

<size

android:height="60dp"

android:width="30dp" />

<!-- 定义使用单种颜色填充 -->

<solid

android:color="#000000"/>

<!-- 绘制边框 -->

<stroke

android:width="1px"

android:color="#f4b00f"/>

</shape>

4、Activity

package com.example.httptest;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import android.app.Activity;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.util.Log;

import android.view.Gravity;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.Button;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.PopupWindow;

import android.widget.SimpleAdapter;

public class PopupWindowActivity extends Activity {

private PopupWindow popupWindow;

private View parent;

/** 菜单弹出来时候的菜单项文字 */

private String[] names = { "编辑相册", "删除相册","删除相片" };

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button bn = (Button) findViewById(R.id.bn);

/** PopupWindow的界面 */

View contentView = getLayoutInflater().inflate(R.layout.menu_layout, null);

/** 列表布局界面 */

ListView listView = (ListView) contentView.findViewById(R.id.listView);

/** 设置网格布局的适配器 */

listView.setAdapter(getAdapter());

/** 设置网格布局的菜单项点击时候的Listener */

listView.setOnItemClickListener(new ItemClickListener());

/** 初始化PopupWindow */

popupWindow = new PopupWindow(contentView,

ViewGroup.LayoutParams.WRAP_CONTENT,

ViewGroup.LayoutParams.WRAP_CONTENT);

//popupWindow.

popupWindow.setFocusable(true);// 取得焦点

popupWindow.setBackgroundDrawable(new BitmapDrawable());

/** 设置PopupWindow弹出和退出时候的动画效果 */

//popupWindow.setAnimationStyle(R.style.animation);

parent = this.findViewById(R.id.main);

}

private final class ItemClickListener implements OnItemClickListener {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position,

long id) {

if (popupWindow.isShowing()) {

popupWindow.dismiss();// 关闭

}

}

}

/** 返回网格布局的适配器 */

private ListAdapter getAdapter() {

List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();

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

HashMap<String, Object> item = new HashMap<String, Object>();

item.put("name", names[i]);

data.add(item);

}

SimpleAdapter simpleAdapter = new SimpleAdapter(this, data,

R.layout.menu_item, new String[] { "name" },

new int[] { R.id.textView });

return simpleAdapter;

}

public void openPopWindow(View v) {

/** 设置PopupWindow弹出后的位置 */

//popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0);

int[] location = new int[2];

v.getLocationOnScreen(location);

Log.v("li","按钮的位置:"+location[0]+","+location[1]);

//popupWindow.showAsDropDown(v);

int w = location[0]-10;

//popupWindow.getHeight()

int h = location[1]+70;

Log.v("li","popupwindow的位置:"+w+","+h);

popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0] + 25, location[1] + 67);

}

}

5、效果图

时间: 2024-07-29 04:36:47

使用popupwindow设计出popupmenu效果的菜单的相关文章

使用Blend设计出符合效果的WPF界面

之前不会用blend,感觉好难的,但美工给出的效果自己有没办法实现,所以研究了一下blend,感觉没有想象中的那么难 废话不多说,开始界面设计 今天拿到美工给的一个界面效果图 这个界面说实话,还可以吧,勉强说得过去.拿到界面效果图,难的两个部分都让我框起来的,这一看就是wpf里面的控件TabControl美化而来,其他部分都是很好弄得,这一篇我们下来美化一个tabControl控件.如下图: 这里我们借助vs 2015 自带的blend,,这个软件安装vs2015就会默认安装上. 我们来新建一个

点击弹出弹性下拉菜单效果

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><meta name="keywords" content="站长,网页特效,js特效,广告代码,zzjs,zzjs.net,sky,www.zzjs.net,站长特效 网" /><meta name="

popupWindow弹出窗口的完美实现(实现弹出背景变暗效果)

最近尝试使用popupWindow实现背景变暗效果,自己优化了一下,并封装成一个可以调用的方法,默认实现弹出窗口显示在传入view的下方,以下代码有详细注释,有问题可以留言 展示效果如下: /** * 我封装的这个popupwindow的方法, * 第一个参数是他要显示在哪个控件下面 * 第二个参数是要填充到popupWindow中的布局文件id * 第三个参数是要给popupWindow设置的背景资源id */ private void showPopWindow(View v,int con

PopupWindow弹出框与背景变暗的实现(附带动画效果)

效果图: 1,定义popupWindow 布局 2,在mainactivity.xml 中设置 用来显示 popupwindow的 布局 3,MainActivity当中 设置popupwindow的 监听事件 4 设置popupWindow 显示的动画效果 out_fromtop.xml in_fromtop.xml ok 下载源码  版权声明:本文为博主原创文章,未经博主允许不得转载.

如何增强ArcGIS插值图出图效果

by 李远祥 在一些科研领域,经常会遇到使用插值的方式进行处理,并生成最终的插值图.插值图在ArcGIS里面非常容易生成,只要具备了采用点数据,通过ArcToolBox里面的插值的工具可以直接生成最终的插值数据.插值的方法有很多种,这里就不做介绍了.数据生成后,其地图制作也是相当的简单,只需要在符号系统的标签里面设置一下,并进行重分类,使用色带去渲染就可以完成.下图去掉一些地图的整饰元素,直接使用最原始的栅格渲染方式进行出图. 尽管这个图按照笔者的经验,将研究区域的边界加上去,并且标红,加入一些

网页设计中透明效果的使用技巧

在网页设计中使用透明效果是件既美观又冒险的事儿.透明效果的使用是把色块,文本或图像“变薄”或者降低饱和度,使颜色变浅透明,这样下个图层的内 容就能穿透显示出来.这种方法如果用好了,效果将会特别棒——能突出显示文本或者在图像的特定区域形成焦点.但设计者在运用透明效果时要特别小心,因为这 么做可能会影响页面的可读性.要是框和文本的透明度不对,更可能会影响到整体的设计. 下文是一些注意事项以及巧妙运用透明效果的成功案例. 用“透明效果”来制造对比 使 用透明效果最大的优点是可以形成对比.设计者可以在图

quick-cocos2d-x学习笔记【6】——制作自定义效果按钮菜单

前面提到的是基本的菜单使用,还是很容易的,不过我们在商业产品中,经常看到的按钮都是非常好看,不光光是图片做得精美,而且动画效果也很棒.Candy Crash都玩过吧,看它们那个按钮,真的像果冻一样,效果确实很赞,所以我们也来做个,当然不是它那个效果,而且点击之后有一个抖动的效果.像这样, 好了,开始做个吧,我这个也是搬了一下coinflip中的按钮代码,算是学习一下. 创建一个views文件夹,里面创建一个MyButton.lua文件,这个就是我们的自定义按钮类了.实现的原理比较简单,在ui.n

使用JavaScript实现弹出层效果

声明 阅读本文需要有一定的HTML.CSS和JavaScript基础 设计 实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来. 实现 <!DOCTYPE html> <html> <head> <title>Window对象</title> <meta charset="utf-8"> </head> <body> <a hr

Axure 动态面板实现弹出框效果

今天在画原型图的时候遇到了个弹出框效果的实现,感觉挺有意思的,拿出来share下~ 如图:当我点击删除按钮后,如果用户选择删除,则要求要弹出一个对话框来让用户输入处理备注,如果不要删除,则点击取消: 首先描述下大致思路,我在页面上加上一个动态面板,然后为这个动态面板加上两个状态,一个是显示弹出框,另一个是隐藏弹窗口. 下面是弹出对话框的两个状态的设计: 隐藏状态的动态面板设置为空白,这样当切换到这个状态时就看不到任何东西. 然后为删除按钮添加用例: 注意,这里是当发生单击事件的时候弹出动态面板,