我的手机管家(19) 应用管理 单独介绍一下PopupWindow

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的手机管家(19) 应用管理 单独介绍一下PopupWindow相关的知识,希望对你有一定的参考价值。

我的手机管家(19) 应用管理  单独介绍一下PopupWindow

在前一节中使用点击ListView 出现一个弹出窗口, 用来显示我们的需求。

PopupWindow: A popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity.

    PopupWindow 是一个弹出窗体, 可以显示任意的视图, 他是一个浮动的容器, 显示在当前activity的上方。

注意要给PopupWindow设置一个背景,否则,会出现点击back键和点击PopupWindow区域外, PopupWindow不会消失, 

    设置背景:mPopupWindow.setBackgroundDrawable(new ColorDrawable());

(1)按钮点击触发 PopupWindow的显示, 

  mPopupWindow.showAsDropDown(pView,60,-pView.getHeight());  显示PopupWindow的位置
  设置popView的弹出效果动画,

(2) 当点击PopupWindow区域以外的地方, PopupWindow消失

(3)点击PopupWindow视图的选项,执行相应的操作。

 

package com.example.testpopmenu;
 

import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
    PopupWindow mPopupWindow;
    View popupView;
    AnimationSet animationset;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    /**
     * 
     * @param v
     */
    public void Click(View v){
        showPopupWindow(v);
    }
    
    @Override
    public void onClick(View v) { 
         if(mPopupWindow!= null){
            mPopupWindow.dismiss();//消失
        } 
        switch (v.getId()) {
        case R.id.tv_lanuch://启动
            Toast.makeText(this, "启动", Toast.LENGTH_LONG).show();
            break;
        case R.id.tv_uninstall://卸载
            Toast.makeText(this, "系统应用,需要root权限才可以卸载", Toast.LENGTH_LONG).show();
            break;
        case R.id.tv_share://分享
            Toast.makeText(this, "分享", Toast.LENGTH_LONG).show();
           break;
        default:
            break;
        }
    }
    
    /**
     *弹出窗口 
     */
    protected void showPopupWindow(View pView){
        if(mPopupWindow==null){
            popupView = View.inflate(this, R.layout.popup_adapter, null);
            mPopupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,true);
            //设定一个背景,这样的话点击返回键可用消失
            mPopupWindow.setBackgroundDrawable(new ColorDrawable());
            TextView tvStart = (TextView) popupView.findViewById(R.id.tv_lanuch);
            TextView tvUninstall = (TextView) popupView.findViewById(R.id.tv_uninstall);    
            TextView tvShare=(TextView) popupView.findViewById(R.id.tv_uninstall);
            
            tvStart.setOnClickListener(this);
            tvUninstall.setOnClickListener(this);
            tvShare.setOnClickListener(this);
            
            //缩放动画
            ScaleAnimation a= new ScaleAnimation(0, 1,0,1,
                    Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f
                    );
            a.setDuration(200);
            
            //渐变动画
            AlphaAnimation alpha = new AlphaAnimation(0, 1);
            alpha.setDuration(200);
            animationset = new AnimationSet(false);
            animationset.addAnimation(a);
            animationset.addAnimation(alpha);
            
        }
        mPopupWindow.showAsDropDown(pView,60,-pView.getHeight());
        popupView.startAnimation(animationset);
    }
 

}

 

 

以上是关于我的手机管家(19) 应用管理 单独介绍一下PopupWindow的主要内容,如果未能解决你的问题,请参考以下文章

我的手机管家(18) 应用管理 主要代码

我的手机管家(17) 应用管理 获取安装的应用程序

我的手机管家(16) 应用管理 界面设计

我的手机管家 进程管理逻辑代码

我的手机管家(15) 缓存处理 逻辑代码

我的手机管家(21) 设置中心