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);
}