android微信右滑删除,Android实现微信侧滑删除当前页面
Android实现微信侧滑删除当前页面的功能,可以通过自定义ViewGroup实现。在这个ViewGroup中,我们可以监听手势事件,根据手势的滑动距离来实现页面的滑动效果。下面我将详细介绍如何实现这个功能。
首先,我们需要创建一个自定义的ViewGroup,继承自FrameLayout。在这个ViewGroup中,我们需要实现onInterceptTouchEvent()和onTouchEvent()方法来监听手势事件。
```javapublic class SwipeLayout extends FrameLayout {
private float startX;
private float startY;
private float offsetX;
private float offsetY;
public SwipeLayout(@NonNull Context context) {
super(context);
}
public SwipeLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public SwipeLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = ev.getX();
startY = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
offsetX = ev.getX() - startX;
offsetY = ev.getY() - startY;
if (Math.abs(offsetX) > Math.abs(offsetY)) {
return true;
}
break;
}
return super.onInterceptTouchEvent(ev);
}
@Override public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
offsetX = event.getX() - startX;
if (offsetX >0) {
setTranslationX(offsetX);
}
break;
case MotionEvent.ACTION_UP:
if (offsetX > getWidth() /3) {
// 执行删除操作 ((Activity) getContext()).finish();
} else {
// 恢复原来的位置 ObjectAnimator.ofFloat(this, "translationX", offsetX,0).start();
}
break;
}
return true;
}
}
```
在这个SwipeLayout中,我们监听了手势事件,当手指向右滑动时,我们将当前页面向右移动,直到达到一定距离时,执行finish()方法关闭当前页面。当手指向左滑动时,我们将页面恢复到原来的位置。
接下来,我们需要在布局文件中使用这个SwipeLayout来包裹我们的页面内容。
```xml android:layout_height="match_parent">
```
最后,我们需要在Activity中设置这个SwipeLayout为ContentView。
```java@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SwipeLayout swipeLayout = new SwipeLayout(this);
setContentView(swipeLayout);
}
```
通过以上步骤,我们就实现了类似微信的侧滑删除当前页面的功能。当用户向右滑动页面时,页面会跟随手指移动,当达到一定距离时,页面会自动关闭。这样就实现了一个简单的侧滑删除功能。