Android CV系列 > QQ消息长按弹窗Popupwindow

https://github.com/AndyAls/QPopuWindow

1.

maven { url 'https://jitpack.io' }

2.

 compile 'com.github.AndyAls:QPopuWindow:v2.0.0'

3.

  QPopuWindow.getInstance(ListViewActivity.this).builder
                        .bindView(view, position)
                        .setPopupItemList(new String[]{"复制", "粘贴", "转发", "更多...."})
                        .setPointers(rawX, rawY)
                        .setOnPopuListItemClickListener(new QPopuWindow.OnPopuListItemClickListener() {
                            /**
                             * @param anchorView 为pop的绑定view
                             * @param anchorViewPosition  pop绑定view在ListView的position
                             * @param position  pop点击item的position 第一个位置索引为0
                             */
                            @Override
                            public void onPopuListItemClick(View anchorView, int anchorViewPosition, int position) {
                                Toast.makeText(ListViewActivity.this, anchorViewPosition + "---->" + position, Toast.LENGTH_SHORT).show();
                            }
                        }).show();
 private String[] titles = {"美食", "电影", "酒店住宿", "休闲娱乐", "外卖", "自助餐", "KTV", "机票/火车票", "周边游", "美甲美睫",
            "火锅", "生日蛋糕", "甜品饮品", "水上乐园", "汽车服务", "美发", "丽人", "景点", "足疗按摩", "运动健身", "健身", "超市", "买菜",
            "今日新单", "小吃快餐", "面膜", "洗浴/汗蒸", "母婴亲子", "生活服务", "婚纱摄影", "学习培训", "家装", "结婚", "全部分配"};
    private int rawX;
    private int rawY;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final GridViewPager mGridViewPager = (GridViewPager) findViewById(R.id.mGridViewPager);
        //初始化数据源
        mGridViewPager
                //设置每一页的容量
                .setPageSize(10)
                .setGridItemClickListener(new GridItemClickListener() {
                    @Override
                    public void click(int pos, int position, String str) {
                        QPopuWindow.getInstance(MainActivity.this).builder
                                .bindView(mGridViewPager, position)
                                .setPopupItemList(new String[]{"复制", "粘贴", "转发", "更多...."})
                                .setPointers(rawX, rawY)
                                .setOnPopuListItemClickListener(new QPopuWindow.OnPopuListItemClickListener() {
                                    /**
                                     * @param anchorView 为pop的绑定view
                                     * @param anchorViewPosition  pop绑定view在ListView的position
                                     * @param position  pop点击item的position 第一个位置索引为0
                                     */
                                    @Override
                                    public void onPopuListItemClick(View anchorView, int anchorViewPosition, int position) {
                                        Toast.makeText(MainActivity.this, anchorViewPosition + "---->" + position, Toast.LENGTH_SHORT).show();
                                    }
                                }).show();
                    }
                })
                .setGridItemLongClickListener(new GridItemLongClickListener() {
                    @Override
                    public void click(int pos, int position, String str) {
                        Toast.makeText(MainActivity.this, ("456"+ pos + "/" + str), Toast.LENGTH_SHORT).show();
                    }
                })
                //传入String的List 必须作为最后一步
                .init(initData());
        //再次更改仍有效
//        mGridViewPager.setImageSetListener(new ImageSetListener() {
//            @Override
//            public void setImage(ImageView iv, int pos) {
//                iv.setBackgroundResource(mImgRes.get(0));
//            }
//        });
        //再次更改仍有效
//        mGridViewPager.setGridItemClickListener(new GridItemClickListener() {
//            @Override
//            public void click(int pos, int position, String str) {
//                Log.d("GridItemClick", pos + "/" + str);
//            }
//        });
    }

    /**
     * 初始化数据源
     */
    private List<Model> initData() {
        List<Model> mData = new ArrayList<>();
        for (int i = 0; i < titles.length; i++) {
            //动态获取资源ID,第一个参数是资源名,第二个参数是资源类型例如drawable,string等,第三个参数包名
            int imageId = getResources().getIdentifier("ic_category_" + i, "mipmap", getPackageName());
            mData.add(new Model(titles[i], imageId));
        }
        return mData;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        rawX= (int) ev.getRawX();
        rawY= (int) ev.getRawY();
        return super.dispatchTouchEvent(ev);
    }

猜你喜欢

转载自blog.csdn.net/FlyPig_Vip/article/details/82622740