popupWindow

作者: 喂_balabala | 来源:发表于2017-12-29 14:12 被阅读12次
    @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            // 弹窗
    
            // contentView-显示的View, width, height-宽高
        /*  TextView contentView = new TextView(mContext);
            contentView.setText("弹窗");
            contentView.setTextSize(20);
            contentView.setBackgroundColor(Color.RED);*/
            
            View contentView = View.inflate(mContext, R.layout.pop_window_layout, null);
    
            final PopupWindow window = new PopupWindow(contentView,
                    ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);
            
            //设置默认只显示一个弹窗
            window.setBackgroundDrawable(new ColorDrawable());
            window.setFocusable(true);
            window.setOutsideTouchable(true);//设置外围点击
            
            //设置动画样式
            window.setAnimationStyle(R.style.pop_anim);
            
            //显示
            //window.showAsDropDown(view);//在哪个控件下面显示
            //window.showAsDropDown(view, 80, -60);
            
            AppBean bean = mListDatas.get(position);
            final String packageName = bean.packageName;
            
            //parent是popupWindow要在哪个夫容器里面展示
            window.showAtLocation(parent, Gravity.CENTER, 0, 0);//显示在指定位置
            
            TextView tvUninstall = (TextView) contentView.findViewById(R.id.tv_uninstall);
            TextView tvOpen = (TextView) contentView.findViewById(R.id.tv_open);
            TextView tvShare = (TextView) contentView.findViewById(R.id.tv_share);
            TextView tvInfo = (TextView) contentView.findViewById(R.id.tv_info);
            
            
            
            //判断显示或者隐藏
            tvUninstall.setVisibility(bean.isSystem ? View.GONE : View.VISIBLE);
            
            PackageManager pkgMgr = getPackageManager();
            final Intent intent = pkgMgr.getLaunchIntentForPackage(packageName);
            tvOpen.setVisibility(intent == null ? View.GONE : View.VISIBLE);
            
            
            tvUninstall.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    //实现卸载功能
                      /* <intent-filter>
                        <action android:name="android.intent.action.VIEW" />
                        <action android:name="android.intent.action.DELETE" />
                        <category android:name="android.intent.category.DEFAULT" />
                        <data android:scheme="package" />
                    </intent-filter>*/
                    
                    Intent intent = new Intent();
                    intent.setAction("android.intent.action.VIEW");
                    intent.setAction("android.intent.action.DELETE");
                    intent.addCategory("android.intent.category.DEFAULT");
                    intent.setData(Uri.parse("package:" + packageName));
                    startActivity(intent);
                    //startActivityForResult(intent, requestCode)不能实现监听卸载完成
                    
                    window.dismiss();
                }
            });
    
    window.dismiss();
    
    public class AppBean {
        public Drawable icon;//图标 
        public String name;
        public boolean isInstallSD;//是否安装在SD卡
        public String space;//应用大小
        public boolean isSystem;//是否为系统应用
        public String packageName;
    }
    
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/pop_bg"
        android:orientation="horizontal"
        android:padding="12dp" >
    
        <TextView
            android:id="@+id/tv_uninstall"
            style="@style/TextNormal"
            android:drawablePadding="4dp"
            android:drawableTop="@drawable/ic_uninstall"
            android:text="卸载" />
    
        <TextView
            android:id="@+id/tv_open"
            style="@style/TextNormal"
            android:layout_marginLeft="4dp"
            android:drawablePadding="4dp"
            android:drawableTop="@drawable/ic_open"
            android:text="打开" />
    
        <TextView
            android:id="@+id/tv_share"
            style="@style/TextNormal"
            android:layout_marginLeft="4dp"
            android:drawablePadding="4dp"
            android:drawableTop="@drawable/ic_share"
            android:text="分享" />
    
        <TextView
            android:id="@+id/tv_info"
            style="@style/TextNormal"
            android:layout_marginLeft="4dp"
            android:drawablePadding="4dp"
            android:drawableTop="@drawable/ic_info"
            android:text="信息" />
    
    </LinearLayout>
    
    <style name="pop_anim" parent="@android:style/Animation.Dialog">
            <item name="android:windowEnterAnimation">@anim/pop_enter</item>
            <item name="android:windowExitAnimation">@anim/pop_exit</item>
        </style>
    
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@interpolator/overshoot" >
    
        <translate
            android:duration="250"
            android:fromXDelta="100%"
            android:toXDelta="0" />
    
    </set>
    
    <!-- Animation for when a dock window at the bottom of the screen is entering. -->
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@interpolator/anticipate" >
    
            <translate
            android:duration="250"
            android:fromXDelta="0"
            android:toXDelta="100%" />
    
    </set>
    

    TWO

    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View v = inflater.inflate(R.layout.pop_login, null);
    //        View v = View.inflate(getContext(),R.layout.pop_login, null);
    
    
            popupWindow = new PopupWindow(v, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            popupWindow.setFocusable(true);
            popupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
            popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
            popupWindow.setOutsideTouchable(true);
            //设置渐入、渐出动画效果
            popupWindow.setAnimationStyle(android.R.style.Animation_Toast);
            popupWindow.setTouchable(true);
            popupWindow.setFocusable(true);
            popupWindow.setBackgroundDrawable(new BitmapDrawable());
            popupWindow.setOutsideTouchable(true);
            popupWindow.setTouchInterceptor(new View.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                        popupWindow.dismiss();
                        return true;
                    }
                    return false;
                }
            });
    
       // popupWindow.update();
            popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
    //        popupWindow.showAsDropDown(view,100,-150);
    

    点击事件中的view就是父容器

    public void onViewClicked(View view) {
        switch (view.getId()) {
    case R.id.rl_touxiang_personalCenter:
        showPopWindow(view);
        break;
        }
    }
    

    相关文章

      网友评论

        本文标题:popupWindow

        本文链接:https://www.haomeiwen.com/subject/utjigxtx.html