popupWindow的使用心得

本来项目中用到popupWindow,后来需求改了,大家懂得~,但是不能白研究了,写点心得,以备日后查看---------------------------

首先,要为popupWindow 写一个xml配置文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/margin_max"
        android:layout_marginRight="@dimen/margin_max"
        android:background="@color/white"
        android:orientation="vertical" >
        <!-- main content -->
         <TextView
            android:id="@+id/diet_pop_tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/margin_max"
            android:text="@string/activity_aerobic"
            android:textColor="@color/string_bgwhite_main"
            android:textSize="@dimen/text_15" /> 
        <!-- main content sub -->


        <TextView
            android:id="@+id/diet_pop_tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/recipe_choose_exam"
            android:layout_marginLeft="@dimen/margin_max"
            android:textColor="@color/string_bgwhite_sub"
            android:textSize="@dimen/text_15" />
        <!-- second title -->


        <TextView
            android:id="@+id/diet_pop_tv3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/diet_pop_title"
            android:paddingLeft="@dimen/margin_max"
            android:layout_marginLeft="@dimen/margin_max"
            android:text="@string/activity_aerobic_content"
            android:textColor="@color/white"
            android:textSize="@dimen/text_15"
            />
        <!-- second content -->


        <TextView
            android:id="@+id/diet_pop_tv4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/margin_max"
            android:text="@string/activity_aerobic_suggest"
            android:textColor="@color/string_bgwhite_main"
            android:textSize="@dimen/text_15" />
        <ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitStart"
android:background="@drawable/popupshadow"
            />
    </LinearLayout>


</LinearLayout>

---------然后---再代码中处理popupWindow,

// new popupwindow
View inflateView = getLayoutInflater().inflate(
R.layout.recipe_popwindow, null);//上面的xml文件,作为popupWindow的视图
mPopupWindow = new PopupWindow(inflateView, LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
mPopupWindow.setFocusable(false);
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setAnimationStyle(R.style.AnimationPreview);//为popupWindow设置进入,退出的动画效果

------下面配置进入退出的动画:

anim文件夹下,进入动画(由右下角进入,由小变大):

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/decelerate_interpolator">
    <scale android:fromXScale=".1" android:toXScale="1.0"
           android:fromYScale=".1" android:toYScale="1.0"
           android:pivotX="100%p" android:pivotY="100%p" 
           android:duration="500"/>
    <alpha android:fromAlpha="0" android:toAlpha="1.0"  
            android:duration="@android:integer/config_mediumAnimTime"/>
</set>

退出动画(向右下角退出,由大变小,变透明):

<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android"  
        android:interpolator="@android:anim/decelerate_interpolator"  
        android:zAdjustment="top">  
    <scale android:fromXScale="1.0" android:toXScale=".5"  
           android:fromYScale="1.0" android:toYScale=".5"  
           android:pivotX="100%p" android:pivotY="100%p"  
           android:duration="@android:integer/config_mediumAnimTime" />  
    <alpha android:fromAlpha="1.0" android:toAlpha="0"  
            android:duration="@android:integer/config_mediumAnimTime"/>  
</set> 

--------在styles文件夹下配置style:

<style name="AnimationPreview">
<item name="android:windowEnterAnimation">@anim/zoomin</item>
<item name="android:windowExitAnimation">@anim/zoomout</item>
</style>

-------最后在代码中设置popupWindow进入退出的判定:

public void openMenu(View v) {
// System.out.println(view.getId() + "-----id--" + view.getBottom()
// + "bottom-----view" + view.getTop());
if (!flag) {//flag初始化为false;
// set position
// mPopupWindow.showAtLocation(view, Gravity.LEFT, 0, 0);
mPopupWindow.showAsDropDown(v, 0, 0);
// view.findViewById(R.id.diet_sugget_ka).setVisibility(View.INVISIBLE);
flag = true;
} else {
mPopupWindow.dismiss();
flag = false;
}
}

------------------------------binggou,完成了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PopupWindow是一种可以在当前界面上方显示的弹出窗口,通常用于显示一些额外的信息或者提供用户操作的选项。在Android中,可以使用PopupWindow类来创建弹出窗口。 以下是使用PopupWindow的一般步骤: 1. 创建PopupWindow对象:使用PopupWindow的构造函数创建一个PopupWindow对象。 2. 设置PopupWindow的属性:设置PopupWindow的大小、位置、背景等属性。 3. 设置PopupWindow的内容视图:使用setContentView方法设置PopupWindow的内容视图,这可以是一个布局文件或者一个View对象。 4. 显示PopupWindow使用showAsDropDown、showAtLocation等方法显示PopupWindow。 5. 处理PopupWindow的事件:设置PopupWindow的监听器,处理PopupWindow的各种事件。 以下是一个简单的例子,展示如何使用PopupWindow: ``` // 创建PopupWindow对象 PopupWindow popupWindow = new PopupWindow(context); // 设置PopupWindow的属性 popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); popupWindow.setFocusable(true); // 设置PopupWindow的内容视图 View contentView = LayoutInflater.from(context).inflate(R.layout.popup_layout, null); popupWindow.setContentView(contentView); // 显示PopupWindow popupWindow.showAsDropDown(anchorView); // 处理PopupWindow的事件 contentView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理点击事件 popupWindow.dismiss(); } }); ``` 在上面的代码中,我们创建了一个PopupWindow对象,并设置了宽高、背景等属性。然后,我们使用LayoutInflater加载了一个布局文件作为PopupWindow的内容视图,并使用setContentView方法设置了PopupWindow的内容视图。最后,我们使用showAsDropDown方法显示了PopupWindow,并设置了一个点击事件处理器来处理用户点击PopupWindow的事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值