QPopuWindow
Introduction: 仿 qq 聊天消息长按弹窗,支持 RecyclerView,ListView,GridView,普通的 View,支持自定义属性扩展
Tags:
如图 1 是 qq 聊天消息的长按的弹窗,最主要的特点是有一个指针,指针的位置是手指触摸手机屏幕的位置,而且弹窗会根据手指的触摸屏幕的不同位置显示在不同的位置,图 2 是 demo 中的效果图
图 1
图 2
QPopuWindow
QPopuWindow 继承自 PopuWindow,支持所有的 View 及属性自定义扩展,通过 builder 链式调用来设置不同的属性和显示,使用简单,代码简洁.
如何使用
- step
1.在项目的根build.gradle
添加
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2.在模块中添加依赖
dependencies {
compile 'com.github.AndyAls:QPopuWindow:v2.0.0'
}
3.使用
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
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();
return true;
}
});