我的手机管家(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);
    }

}
时间: 2024-08-28 10:02:57

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

我的手机管家(2) 进程管理布局

我的手机管家(2)  进程管理 (1)获取进程信息:所有的进程信息, 正在运行的进程信息, 剩余可用内存 (2)获取进程信息是一个耗时的操作, 首先在使用子线程获取进程信息的时候显示缓冲界面,缓冲加载完成后, 通知LIstView展示数据,加载适配器, 同时缓冲结束 获取进程信息的提供者: package com.ejob.phonesafe.provider; import java.io.BufferedReader; import java.io.FileReader; import ja

Launcher知识的demo,手机管家小伙家与悬浮窗

Launcher知识的demo,主要仿的手机管家小伙家与悬浮窗的效果.东西比较简单,直接贴代码 主要用到了windowManager 中的更新updateViewLayout(view,params),和 添加windowManager.addView()和删除windowManager.removeView() 移动launcher主要是updateViewLayout(view,params),中的params来实现 贴几个主要类,全部源码请自己下载 package com.pzf.flow

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

我的手机管家(21) 设置中心 : 包括三个界面:四个功能 (1)电话归属地查询 使用SQLIteDatabase 查询address.db, 查询指定号码的归属地 (2) 检查应用版本更新 (3)关于我的手机管家信息 (4)黑名单服务的开启与关闭 黑名单服务: 通过绑定广播进行短信的拦截, 会比静态注册先拦截短信 通过电话管理器TelephonyManager监听电话状态 一旦有电话打入, 首先进行黑名单对比. package com.chb.myphonesave.service; impo

99手机管家项目的总结

断断续续,终于做完了这个项目(2014-11-24~2015-01-01),感慨万千,真的是白天求生存,晚上求发展. 在手机管家的项目中,实现了手机防盗,通讯卫士,软件管理,进程管理,流量统计,手机杀毒,缓存清理,高级工具,设置中心等功能.使用到的东西: 1.Android四大控件,各大布局. 2.关于ListView的convertView的复用(Listview的优化). 3.ListView的convertView复用带来的数据错乱的问题. 4.AIDL和反射的理解(挂断电话,清理缓存).

我的手机管家(10)病毒扫描 拷贝病毒数据库

我的手机管家(10)病毒扫描    拷贝病毒数据库 (1)将病毒数据库复制到asserts文件夹下,然后复制到 "data/data/com.chb.myphonesafe/files/antivirus.db" //数据库路径必须是data/data目录下,否则无法访问 拷贝:AssetUtil package com.chb.myphonesave.util; import java.io.File; import java.io.FileOutputStream; import

类似腾讯手机管家应用源码完整版

类似腾讯手机管家应用源码,也是自己写的android手机管家,内附源代码,应用实现了手机防功能,通信卫士功能,软件管家,进程管理,手机杀毒等功能,里面的图片部分用到了腾讯手机管家的图片,所以跟腾讯手机管家应用比较类似了,大家可以参考一下,可能有的功能还没有那么完善,不过大家可以再这个基础上进行升级,创新,增加自己的特色吧.或者大家可以看看安装演示版(附件下面) 源码项目下载:http://code.662p.com/view/8982.html <ignore_js_op> <ignor

类似腾讯手机管家应用android源码

类似腾讯手机管家应用源码,也是自己写的android手机管家,内附源代码,应用实现了手机防功能,通信卫士功能,软件管家,进程管理,手机杀毒等功能,里面的图片部分用到了腾讯手机管家的图片,所以跟腾讯手机管家应用比较类似了,大家可以参考一下,可能有的功能还没有那么完善,不过大家可以再这个基础上进行升级,创新,增加自己的特色吧.或者大家可以看看安装演示版(附件下面) <ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore

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

我的手机管家(15) 缓存处理   逻辑代码 private PackageManager pm;//包管理器 //获取包管理器 pm = getPackageManager(); 使用子线程获取应用程序的整体包信息,  PackageInfo 存储包的整体信息 List<PackageInfo> packages = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); //开始遍历每个包,获取图标,名称, 大小

我的手机管家(1) 主界面

我的手机管家 主界面布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" a