android使用popupwindow仿微信点赞功能
Android 使用 PopupWindow仿微信点赞功能
在 Android 开发中,PopupWindow 是一种常见的 UI 组件,可以用来显示临时的弹出窗口。今天,我们将通过一个实例来演示如何使用 PopupWindow 来实现微信朋友圈的点赞功能。
效果图
首先,让我们看一下最终的效果图:
1. 主界面的布局是一个 ListView,包含了多个 item。
2. 当用户点击一个 item 时,PopupWindow 会弹出,显示一个点赞按钮和取消按钮。
3. 用户可以通过点击点赞按钮或取消按钮来进行操作。
实现步骤
下面是具体的实现步骤:
1. 创建布局文件首先,我们需要创建两个布局文件:`item_layout.xml` 和 `popup_layout.xml`。
`item_layout.xml`:
```xml
android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" />
```
`popup_layout.xml`:
```xml
android:layout_height="wrap_content">
```
2. 使用 BaseAdapter 设置 ListView接下来,我们需要使用 BaseAdapter 来设置 ListView 的 item。
```javapublic class ItemAdapter extends BaseAdapter {
private List
public ItemAdapter(List
mData = data;
}
@Override public int getCount() {
return mData.size();
}
@Override public Object getItem(int position) {
return mData.get(position);
}
@Override public long getItemId(int position) {
return position;
}
@Override public View getView(int position, View convertView, ViewGroup parent) {
ItemHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
holder = new ItemHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ItemHolder) convertView.getTag();
}
holder.itemTitle.setText(mData.get(position));
return convertView;
}
}
```
3. 使用 PopupWindow 显示点赞按钮现在,我们需要使用 PopupWindow 来显示点赞按钮。
```javapublic class MainActivity extends AppCompatActivity {
private ListView mListView;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = findViewById(R.id.list_view);
List
// ...
ItemAdapter adapter = new ItemAdapter(data);
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override public void onItemClick(AdapterView> parent, View view, int position, long id) {
showPopupWindow(position);
}
});
}
private void showPopupWindow(int position) {
PopupWindow popupWindow = new PopupWindow(this);
popupWindow.setContentView(R.layout.popup_layout);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
Button button = popupWindow.getContentView().findViewById(R.id.popup_button);
button.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// 点赞操作 Toast.makeText(MainActivity.this, "点赞成功", Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}
});
popupWindow.showAsDropDown(mListView,0,0);
}
}
```
4. 取消按钮点击事件最后,我们需要设置取消按钮的点击事件。
```javabutton.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// 取消操作 Toast.makeText(MainActivity.this, "取消成功", Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}
});
```
总结
通过以上步骤,我们实现了一个简单的 PopupWindow仿微信点赞功能。用户可以点击 ListView 的 item 来显示点赞按钮和取消按钮,进行相应操作。
当然,这只是一个基本的例子,你可以根据自己的需求进行扩展和修改。