关闭

Android自定义popupwindow实现ios中UC浏览器中长按图片弹出的PopupWindow效果

标签: Android自定义popupWindow
1128人阅读 评论(0) 收藏 举报
分类:

Android应用仿ISO中UC浏览器中长安图片弹出的PopupWindow的效果


MainActivity:

<span style="font-size:18px;">public class MainActivity extends AppCompatActivity implements View.OnLongClickListener{

    private ImageView mImageView;
    private PicturePopupWindow mPopupWindow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();

        mImageView.setOnLongClickListener(this);
    }

    private void initView() {
        mImageView = (ImageView) findViewById(R.id.image);
    }

    @Override
    public boolean onLongClick(View v) {
        switch (v.getId()){
            case R.id.image:
                //对popwindow进行初始化设置
                if(mPopupWindow == null){
                    mPopupWindow = new PicturePopupWindow(this);
                    //实现回调方法
                    mPopupWindow.setOnClickListener(piconclick);
                }
                if(!mPopupWindow.isShowing()){
                   // 显示窗口
                    mPopupWindow.showAtLocation(
                            v,
                            Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); // 设置layout在PopupWindow中显示的位
                }
                break;
        }
        return false;
    }

    public View.OnClickListener piconclick = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mPopupWindow.dismiss();
            switch (v.getId()){
                case R.id.btnLookPic:
                    Toast.makeText(MainActivity.this,"进入看图模式",Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btnSavePic:
                    Toast.makeText(MainActivity.this,"保存图片",Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btnSharePic:
                    Toast.makeText(MainActivity.this,"分享图片",Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btnCancel:
                    break;
            }
        }
    };
}</span>

在长按图片的时初始化自定义popupwindow的初始化,实现回调方法。


自定义的pupWindow:

<span style="font-size:18px;">public class PicturePopupWindow extends PopupWindow {

    private Button btnLookPic, btnSavePic, btnSharePic, btnCancel;
    private View.OnClickListener mOnClickListener;
    private View mMenuView;

    public PicturePopupWindow(Activity context){
        super(context);
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mMenuView = inflater.inflate(R.layout.pop_item, null);
        // 设置SelectPicPopupWindow的View
        this.setContentView(mMenuView);
        // 设置SelectPicPopupWindow弹出窗体的宽
        this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
        // 设置SelectPicPopupWindow弹出窗体的高
        this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
        // 设置SelectPicPopupWindow弹出窗体可点击
        this.setFocusable(true);
        // 设置SelectPicPopupWindow弹出窗体动画效果
        setAnimationStyle(R.transition.popupwindow_bg_anim);
        // 实例化一个ColorDrawable颜色为半透明
        ColorDrawable dw = new ColorDrawable(0xb0000000);
        // 设置SelectPicPopupWindow弹出窗体的背景
        this.setBackgroundDrawable(dw);

        initView();
    }

    private void initView() {
        btnLookPic = (Button) mMenuView.findViewById(R.id.btnLookPic);
        btnSavePic = (Button) mMenuView.findViewById(R.id.btnSavePic);
        btnSharePic = (Button) mMenuView.findViewById(R.id.btnSharePic);
        btnCancel = (Button) mMenuView.findViewById(R.id.btnCancel);

        btnLookPic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mOnClickListener != null){
                    mOnClickListener.onClick(v);
                }
                dismiss();
            }
        });

        btnSavePic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mOnClickListener != null){
                    mOnClickListener.onClick(v);
                }
                dismiss();
            }
        });

        btnSharePic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mOnClickListener != null){
                    mOnClickListener.onClick(v);
                }
                dismiss();
            }
        });

        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mOnClickListener != null){
                    mOnClickListener.onClick(v);
                }
                dismiss();
            }
        });
        // mMenuView添加OnTouchListener监听判断获取触屏位置,如果在选择框外面则销毁弹出框
        mMenuView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
    }

    /**
     * 设置回调方法
     * @param onClickListener
     */
    public void setOnClickListener(View.OnClickListener onClickListener){
        this.mOnClickListener = onClickListener;
    }
}</span>

在自定的popupwindow写着这个回调方法,便于扩展。


效果图:



按键的点击颜色变化(drawable中设置selector),还有popupwindow填出的动画效果可以按自己的想法更改。


Demo下载地址:Android仿UC长按图片弹出的PopupWindow效果


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android使用popwindow高仿IOS底部弹框

Android使用popwindow高仿IOS底部弹框
  • qq_26650589
  • qq_26650589
  • 2017-01-17 15:11
  • 993

仿IOS底部选项效果--底部弹出PopupWindow,背景变为半透明效果

底部弹出PopupWindow,背景变为半透明效果,采用两种方式实现 转载请注明出处:http://blog.csdn.net/LANG791534167/article/details/4898...
  • LANG791534167
  • LANG791534167
  • 2015-10-09 00:36
  • 4290

Android中长按弹出选项框View进行操作

长按弹出选项框View进行操作 主要代码解释 /** pop view */ View mPopView = LayoutInflater.from(this).inflate...
  • Beyond0525
  • Beyond0525
  • 2015-05-19 10:05
  • 7243

Android仿UC长按图片弹出的PopupWindow效果

  • 2016-06-02 09:38
  • 20.22MB
  • 下载

myGzoom--图片弹出层(仿windows照片查看器,可缩放抓取移动)

 html:  .  .  . 1、实现点击class为pic的图片时弹出大图 2、可滚轮放大和随意移动。 3、能切换图片。 4、兼容ie7-11、FF、chrom...
  • henuddy
  • henuddy
  • 2014-02-13 22:53
  • 884

仿微信长按弹出popwindow效果

转载自 http://my.oschina.net/moziqi/blog/497429主要关注用PopWindow实现: 利用PopupWindow实现时,首先它弹出来的时候我们...
  • u010347927
  • u010347927
  • 2016-05-30 16:11
  • 2919

手把手教会popupWindow从下往上弹出效果的实现

效果如图所示,点击开始按钮,popWindow从下往上出来,再点击popWindow外面,popWindow又从上往下消失 可以看出来,上面的popupWindow是半透明的,后面我会细...
  • l970859633
  • l970859633
  • 2016-04-25 16:03
  • 1691

Android自定义popupwindow实现ios中UC浏览器中长按图片弹出的PopupWindow效果

Android应用仿ISO中UC浏览器中长安图片弹出的PopupWindow的效果 MainActivity: public class MainActivity extends AppCompa...
  • Wtoria
  • Wtoria
  • 2016-06-01 19:05
  • 1128

Android仿UC长按图片弹出的PopupWindow效果

  • 2016-06-02 09:38
  • 20.22MB
  • 下载

Android 各种菜单,弹出菜单,打开文件子菜单,文本框的复制粘贴全选菜单效果,自定义图片文字菜单效果,PopupMenu,PopupWindow

Android 各种菜单,弹出菜单,打开文件子菜单,文本框的复制粘贴全选菜单效果,自定义图片文字菜单效果 菜单弹出效果 手机屏幕有限,经常使用,方便显示更多功能。 在android 4.0之...
  • CSDNYUANDAIMAXUEXI
  • CSDNYUANDAIMAXUEXI
  • 2015-09-30 10:24
  • 2037
    个人资料
    • 访问:43680次
    • 积分:852
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条