Android应用开发Android 自定义PopWindow的简单使用
白羽 2019-04-15 来源 :网络 阅读 1533 评论 0

摘要:本文将带你了解Android应用开发Android 自定义PopWindow的简单使用,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android 自定义PopWindow的简单使用,希望本文对大家学Android有所帮助。


Android应用开发Android 自定义PopWindow的简单使用



    下面用一个简单的自定义布局来讲解PopWindow的使用
    先看效果图:
   
   
   
    1.popwidow的类实现:
  
    import android.content.Context;
    import android.graphics.drawable.BitmapDrawable;
    import android.view.View;
    import android.widget.PopupWindow;
     
    public class MyPopWindow extends PopupWindow implements   View.OnClickListener{
     
        private float density = 1.0f;
        private Context mContext;
        public MyPopWindow(Context   context) {
            mContext=context;
            initPopupWindow();
            View view =   View.inflate(context, R.layout.pop_window, null);
            setContentView(view);
              //设置popwindow的宽高,这个数字是多少就设置多少dp,注意单位是dp
            setHeight((int)   (160*density));
            setWidth((int) (100*density));
        }
     
        //初始化popwindow
        private void initPopupWindow() {
              setAnimationStyle(R.style.popwindowAnim);//设置动画
            setFocusable(true);
            setOutsideTouchable(true);
            setBackgroundDrawable(new   BitmapDrawable());
            density =   mContext.getResources().getDisplayMetrics().density;//
        }
     
        /**
         * 显示popupWindow
         */
        public void showPopupWindow(View   parent) {
            if (!this.isShowing())   {
                // 以下拉方式显示popupwindow
                  this.showAsDropDown(parent, parent.getLayoutParams().width / 2,   18);
            } else {
                this.dismiss();
            }
        }
     
        @Override
        public void onClick(View v)   {
            //自己设置点击事件。。。
        }
    }
    2.自定义popwindow的布局

    3.自定义popwindow的动画
    (1)自定义style
    (2)自定义入场动画
    (2)自定义出场动画
   


    4.最后调用
      public class MainActivity extends Activity {
        private Context mContext;
        private Button add;
     
        @Override
        protected void onCreate(Bundle   savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_test);
            final Button   button=findViewById(R.id.btn);
            mContext=this;
            button.setOnClickListener(new   View.OnClickListener() {
                @Override
                public void onClick(View   v) {
                    MyPopWindow   myPopWindow=new MyPopWindow(mContext);
                    myPopWindow.showPopupWindow(button);
                }
            });
        }
     
    }
    总结
    1.调用直接实现这个方法然后调用showPopupWindow(view);
    2.设置popwindow的高宽
   

    density = mContext.getResources().getDisplayMetrics().density;//
    setHeight((int) (160*density));
    setWidth((int) (100*density));
    3.自定义出入场动画需要自己了解
    4.设置popwindow的出现位置(在实现showPopupWindow方法中)
   

    this.showAsDropDown(parent, parent.getLayoutParams().width / 2, 18);
    this.showAsDropDown(相对于哪个控件弹出, xoff(相对于这个控件x轴的位移),   yoff(相对于这个控件y轴的位移));
        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程