android 底部弹出菜单(带透明背景)
2016-08-16 16:48
537 查看
来源:http://blog.csdn.net/top_code/article/details/10285997#comments
最近项目中需要在界面的底部弹出一个向上弹出的菜单界面,并且带渐变的透明背景,跟大家分享一下!
运行效果图:
![](https://img-blog.csdn.net/20130824221456203?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRlhfU0tZ/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击 分享 弹出 底部菜单
![](https://img-blog.csdn.net/20130824221248765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRlhfU0tZ/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
菜单界面 share_popup_menu.xml
[html] view
plain copy
<?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:background="@drawable/transparent_bg" >
<LinearLayout
android:id="@+id/ll_popup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/popup_bg"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/rl_weixin"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/detail_menu_margin_top_up"
android:background="@color/light_black" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_wechat"
android:layout_toLeftOf="@+id/tv_weixin"
android:contentDescription="@string/app_name"/>
<TextView
android:id="@+id/tv_weixin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:text="@string/share_to_weixin"
android:textColor="@color/white" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_weibo"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/detail_menu_margin_top_up"
android:background="@color/light_black" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_weibo"
android:layout_toLeftOf="@+id/tv_weibo"
android:contentDescription="@string/app_name"/>
<TextView
android:id="@+id/tv_weibo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:text="@string/share_to_weibo"
android:textColor="@color/white" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_duanxin"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/detail_menu_margin_top_up"
android:background="@color/light_black" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_message"
android:layout_toLeftOf="@+id/tv_duanxin"
android:contentDescription="@string/app_name"/>
<TextView
android:id="@+id/tv_duanxin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:text="@string/share_to_duanxin"
android:textColor="@color/white" />
</RelativeLayout>
<Button
android:id="@+id/bt_cancle"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/detail_menu_margin_top"
android:layout_marginTop="@dimen/detail_menu_margin_top"
android:background="@color/dark_white"
android:text="@string/cancel"
android:textColor="@color/white" />
</LinearLayout>
</RelativeLayout>
主界面MainActivity.java
[java] view
plain copy
package com.example.popupdemo;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
public class MainActivity extends Activity implements OnClickListener {
private PopupWindow mpopupWindow;
private Button bt_share;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findView();
}
private void findView() {
bt_share = (Button) findViewById(R.id.bt_share);
bt_share.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_share:
showPopMenu();
break;
case R.id.rl_weixin:
mpopupWindow.dismiss();
break;
case R.id.rl_weibo:
mpopupWindow.dismiss();
break;
case R.id.rl_duanxin:
mpopupWindow.dismiss();
break;
case R.id.bt_cancle:
mpopupWindow.dismiss();
break;
default:
break;
}
}
private void showPopMenu() {
View view = View.inflate(getApplicationContext(), R.layout.share_popup_menu, null);
RelativeLayout rl_weixin = (RelativeLayout) view.findViewById(R.id.rl_weixin);
RelativeLayout rl_weibo = (RelativeLayout) view.findViewById(R.id.rl_weibo);
RelativeLayout rl_duanxin = (RelativeLayout) view.findViewById(R.id.rl_duanxin);
Button bt_cancle = (Button) view.findViewById(R.id.bt_cancle);
rl_weixin.setOnClickListener(this);
rl_weibo.setOnClickListener(this);
rl_duanxin.setOnClickListener(this);
bt_cancle.setOnClickListener(this);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mpopupWindow.dismiss();
}
});
view.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in));
LinearLayout ll_popup = (LinearLayout) view.findViewById(R.id.ll_popup);
ll_popup.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_bottom_in));
if(mpopupWindow==null){
mpopupWindow = new PopupWindow(this);
mpopupWindow.setWidth(LayoutParams.MATCH_PARENT);
mpopupWindow.setHeight(LayoutParams.MATCH_PARENT);
mpopupWindow.setBackgroundDrawable(new BitmapDrawable());
mpopupWindow.setFocusable(true);
mpopupWindow.setOutsideTouchable(true);
}
mpopupWindow.setContentView(view);
mpopupWindow.showAtLocation(bt_share, Gravity.BOTTOM, 0, 0);
mpopupWindow.update();
}
}
渐变动画
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="400"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
位移动画
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="400"
android:fromYDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toYDelta="0" />
![](http://static.blog.csdn.net/images/save_snippets.png)
代码大家自己下载下来慢慢看吧
工程下载地址:http://download.csdn.net/detail/fx_sky/6006143
最近项目中需要在界面的底部弹出一个向上弹出的菜单界面,并且带渐变的透明背景,跟大家分享一下!
运行效果图:
点击 分享 弹出 底部菜单
菜单界面 share_popup_menu.xml
[html] view
plain copy
<?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:background="@drawable/transparent_bg" >
<LinearLayout
android:id="@+id/ll_popup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/popup_bg"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/rl_weixin"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/detail_menu_margin_top_up"
android:background="@color/light_black" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_wechat"
android:layout_toLeftOf="@+id/tv_weixin"
android:contentDescription="@string/app_name"/>
<TextView
android:id="@+id/tv_weixin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:text="@string/share_to_weixin"
android:textColor="@color/white" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_weibo"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/detail_menu_margin_top_up"
android:background="@color/light_black" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_weibo"
android:layout_toLeftOf="@+id/tv_weibo"
android:contentDescription="@string/app_name"/>
<TextView
android:id="@+id/tv_weibo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:text="@string/share_to_weibo"
android:textColor="@color/white" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_duanxin"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/detail_menu_margin_top_up"
android:background="@color/light_black" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/icon_message"
android:layout_toLeftOf="@+id/tv_duanxin"
android:contentDescription="@string/app_name"/>
<TextView
android:id="@+id/tv_duanxin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="15dp"
android:text="@string/share_to_duanxin"
android:textColor="@color/white" />
</RelativeLayout>
<Button
android:id="@+id/bt_cancle"
android:layout_width="fill_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="@dimen/detail_menu_item_height"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/detail_menu_margin_top"
android:layout_marginTop="@dimen/detail_menu_margin_top"
android:background="@color/dark_white"
android:text="@string/cancel"
android:textColor="@color/white" />
</LinearLayout>
</RelativeLayout>
主界面MainActivity.java
[java] view
plain copy
package com.example.popupdemo;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
public class MainActivity extends Activity implements OnClickListener {
private PopupWindow mpopupWindow;
private Button bt_share;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findView();
}
private void findView() {
bt_share = (Button) findViewById(R.id.bt_share);
bt_share.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_share:
showPopMenu();
break;
case R.id.rl_weixin:
mpopupWindow.dismiss();
break;
case R.id.rl_weibo:
mpopupWindow.dismiss();
break;
case R.id.rl_duanxin:
mpopupWindow.dismiss();
break;
case R.id.bt_cancle:
mpopupWindow.dismiss();
break;
default:
break;
}
}
private void showPopMenu() {
View view = View.inflate(getApplicationContext(), R.layout.share_popup_menu, null);
RelativeLayout rl_weixin = (RelativeLayout) view.findViewById(R.id.rl_weixin);
RelativeLayout rl_weibo = (RelativeLayout) view.findViewById(R.id.rl_weibo);
RelativeLayout rl_duanxin = (RelativeLayout) view.findViewById(R.id.rl_duanxin);
Button bt_cancle = (Button) view.findViewById(R.id.bt_cancle);
rl_weixin.setOnClickListener(this);
rl_weibo.setOnClickListener(this);
rl_duanxin.setOnClickListener(this);
bt_cancle.setOnClickListener(this);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mpopupWindow.dismiss();
}
});
view.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in));
LinearLayout ll_popup = (LinearLayout) view.findViewById(R.id.ll_popup);
ll_popup.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_bottom_in));
if(mpopupWindow==null){
mpopupWindow = new PopupWindow(this);
mpopupWindow.setWidth(LayoutParams.MATCH_PARENT);
mpopupWindow.setHeight(LayoutParams.MATCH_PARENT);
mpopupWindow.setBackgroundDrawable(new BitmapDrawable());
mpopupWindow.setFocusable(true);
mpopupWindow.setOutsideTouchable(true);
}
mpopupWindow.setContentView(view);
mpopupWindow.showAtLocation(bt_share, Gravity.BOTTOM, 0, 0);
mpopupWindow.update();
}
}
渐变动画
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="400"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
位移动画
[html] view
plain copy
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="400"
android:fromYDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:toYDelta="0" />
![](http://static.blog.csdn.net/images/save_snippets.png)
代码大家自己下载下来慢慢看吧
工程下载地址:http://download.csdn.net/detail/fx_sky/6006143
相关文章推荐
- android 底部弹出菜单(带透明背景)
- android 底部弹出选项,背景透明,PopupWindow的使用
- android style 从底部弹出或滑出选择菜单窗口的样式
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- 【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻底部弹出菜单
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- Android底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)
- android 仿微信底部弹出菜单
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- android Activity实现从底部弹出或滑出选择菜单或窗口
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- android Activity实现从底部弹出或滑出选择菜单或窗口
- android同时弹出底部和顶部菜单
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- [Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)
- 实现从底部弹出或滑出选择菜单或窗口 android
- 【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻底部弹出菜单