private ViewDragHelper mDrragHelper;
public SlideViewGroup(@NonNull Context context) {
this(context,null);
}
public SlideViewGroup(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs,0);
}
public SlideViewGroup(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
super(context, attrs, defStyleAttr);
mDrragHelper=ViewDragHelper.create(this,1.0f,mCallback);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
//交给viewdrag去拦截
//事件分发拦截
float x=0;
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
x =event.getX();
break;
// return false;
case MotionEvent.ACTION_MOVE:
if (STATE==0&getX()-x<0){
return mDrragHelper.shouldInterceptTouchEvent(event);
}else if (STATE==1){
return mDrragHelper.shouldInterceptTouchEvent(event);
}
break;
}
return false;
}
//boolean control=true;//控制downx的初始化
@Override
public boolean onTouchEvent(MotionEvent event) {
mDrragHelper.processTouchEvent(event);
//if (control)
float downX=0;
if (event.getAction()==MotionEvent.ACTION_DOWN){
downX=event.getRawX();
if (STATE==1){
//if (event.getRawX()>0&downX<leftWidth-rightViewWidth)
//close();
// Toast.makeText(this.getContext(), "leftWidth"+leftWidth+"rawx"+event.getRawX(), Toast.LENGTH_SHORT).show();
}
}
if (event.getAction()==MotionEvent.ACTION_UP){
//Toast.makeText(this.getContext(), "downx"+downX, Toast.LENGTH_SHORT).show();
//点击删除//&downX>leftWidth-rightViewWidth&downX<leftWidth-rightViewWidth/2
// Toast.makeText(this.getContext(), "删除1", Toast.LENGTH_SHORT).show();
if (STATE==1&event.getRawX()>leftWidth-rightViewWidth&event.getRawX()<leftWidth-rightViewWidth/2){
// Toast.makeText(this.getContext(), "删除2", Toast.LENGTH_SHORT).show();
if (skipListener!=null){
// Toast.makeText(this.getContext(), "删除3", Toast.LENGTH_SHORT).show();
skipListener.onDelete();
}
// Toast.makeText(this.getContext(), "删除", Toast.LENGTH_SHORT).show();
}
//点击删除&downX>leftWidth-rightViewWidth/2&downX<leftWidth-rightViewWidth
if (STATE==1&event.getRawX()>leftWidth-rightViewWidth/2&event.getRawX()<leftWidth){
// Toast.makeText(this.getContext(), "修改", Toast.LENGTH_SHORT).show();
if (skipListener!=null){
skipListener.onDefine();
}
}
}
return true;
}
mDrragHelper.shouldInterceptTouchEvent(event); mDrragHelper.processTouchEvent(event);
private ViewDragHelper.Callback mCallback=new ViewDragHelper.Callback() {
@Override
public boolean tryCaptureView(View child, int pointerId) {
return child==leftView;
}
@Override
public int clampViewPositionHorizontal(View child, int left, int dx) {
if (left>=0)
return 0;
if (left<-rightViewWidth)
return -rightViewWidth;
return left;
}
@Override
public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {
super.onViewPositionChanged(changedView, left, top, dx, dy);
rightView.layout(leftWidth + left, 0, leftWidth + rightViewWidth, viewHeight);
/* if (left<0&left>rightViewWidth/2){
mDrragHelper.smoothSlideViewTo(leftView,left,0);
mDrragHelper.smoothSlideViewTo(rightView,left,0);
}*/
/* if (left>=-(leftWidth+rightViewWidth)) {
rightView.layout(leftWidth + left, 0, leftWidth + rightViewWidth, viewHeight);
}
if (left<-(leftWidth+rightViewWidth)){
rightView.layout(leftWidth, 0, leftWidth + rightViewWidth, viewHeight);
}*/
}
@Override
public void onViewReleased(View releasedChild, float xvel, float yvel) {
super.onViewReleased(releasedChild, xvel, yvel);
Log.i("left xvel",xvel+"y"+yvel);
if (xvel<0){
open();/* mDrragHelper.smoothSlideViewTo(rightView,rightViewWidth/2,0);*/
}else if (leftView.getLeft()<-rightViewWidth/2)
{open();}else {
// Log.i("left open","open");
close();
}
}
@Override
public int getViewHorizontalDragRange(View child) {
return -rightViewWidth;
}
@Override
public void onEdgeTouched(int edgeFlags, int pointerId) {
super.onEdgeTouched(edgeFlags, pointerId);
}
};
@Override
public void onEdgeTouched(int edgeFlags, int pointerId) {
super.onEdgeTouched(edgeFlags, pointerId);
Toast.makeText(getContext(), "edgeTouched", Toast.LENGTH_SHORT).show();
}
@Override
public void onEdgeDragStarted(int edgeFlags, int pointerId) {
mDragHelper.captureChildView(mDragView2, pointerId);
}
public void open(){
if (listener!=null){
listener.onOpen(this);
}
if (mDrragHelper.smoothSlideViewTo(leftView,-rightViewWidth,0))
ViewCompat.postInvalidateOnAnimation(SlideViewGroup.this);
STATE=1;
}
@Override
public void computeScroll() {
if (mDrragHelper.continueSettling(true)) {
ViewCompat.postInvalidateOnAnimation(this);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有