Android-实现底部弹出PopupWindow并让背景逐渐变暗

本文介绍了Android中如何使用PopupMenu和PopupWindow实现底部弹出效果,并着重讲解了如何通过动态改变背景透明度,使背景在弹出过程中逐渐变暗,提供了一种平滑过渡的视觉体验。

Android-实现底部弹出PopupWindow并让背景逐渐变暗

在android开发中,经常需要通过点击某个按钮弹出对话框或者选择框,通过Dialog或者PopupMenu、PopupWindow都能实现。
这里主要介绍后两者:PopupMenu、PopupWindow的实现。 先看两个效果图左边PopupMenu,右边PopupWindow:
PopupMenu PopupWindow

一、PopupMenu实现:

PopupMenu实现起来比较简单,主要用来实现根据按钮附近弹出的对话框。

  • 首先定义一个menu文件\res\menu\headmenu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context="com.arbo.hero.LoginActivity">
    <item
        android:id="@+id/camera"
        android:title="拍照"
        android:orderInCategory="100"
        app:showAsAction="never" />
    <item
        android:id="@+id/gallery"
        android:title="从相册中选取"
        android:orderInCategory="100"
        app:showAsAction="never" />
    <item
        android:id="@+id/cancel"
        android:title="取消"
        android:orderInCategory="100"
        app:showAsAction="never" />

</menu>
  • 创建一个PopupMenu并添加点击事件:
private void showPopmenu(View view){
        popupMenu = new PopupMenu(this,view);
        popupMenu.getMenuInflater().inflate(R.menu.headmenu,popupMenu.getMenu());
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch(item.getItemId()){
                    case R.id.camera:
                        Toast.makeText(HeadPortrait.this,"Click camera",Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.gallery:
                        Toast.makeText(HeadPortrait.this,"Click gallery",Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.cancel:
                        Toast.makeText(HeadPortrait.this,"Click cancel",Toast.LENGTH_SHORT).show();
                        break;
                }
                return false;
            }
        });
        popupMenu.show();
    }
  • MainActivity很简单,点击按钮调用showPopmenu()方法即可:
public class MainActivity extends Activity{
   
   
    @Override
    protected void onCreate(B
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值