几行代码实现Android弧形滑动
使用方式:
添加依赖:
implementation 'com.wuyr:arcslidinghelper:1.0.0'
APIs:
MethodDescription
create(View targetView, OnSlidingListener listener)创建实例
targetView: 圆弧滑动事件以此View的中心点为圆心
OnSlidingListener: 旋转事件回调
enableInertialSliding(boolean enable)设置是否开启惯性滑动
setSelfSliding(boolean isSelfSliding)设置是否自身滑动 (即接受触摸事件的View和旋转的View是否同一个对象)
setScrollAvailabilityRatio(float ratio)设置惯性滑动的利用率 (范围:0~1, 数值越大,旋转越激进)
setOnSlideFinishListener(OnSlideFinishListener listener)设置滚动完毕监听器
handleMovement(MotionEvent event)处理触摸事件
updateMovement(MotionEvent event)更新当前手指触摸的坐标,在ViewGroup的onInterceptTouchEvent中使用
updatePivotX(int pivotX)更新圆心x坐标
updatePivotY(int pivotY)更新圆心y坐标
abortAnimation()停止本次滚动
release()释放资源
简单使用示例:
private ArcSlidingHelper mArcSlidingHelper;
private View mView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_main_view);
mView = findViewById(R.id.view);
mView.post(() -> {
//创建对象
mArcSlidingHelper = ArcSlidingHelper.create(mView,
angle -> mView.setRotation(mView.getRotation() + angle));
//开启惯性滚动
mArcSlidingHelper.enableInertialSliding(true);
});
getWindow().getDecorView().setOnTouchListener((v, event) -> {
//处理滑动事件
mArcSlidingHelper.handleMovement(event);
return true;
});
}
@Override
protected void onDestroy() {
super.onDestroy();
//释放资源
mArcSlidingHelper.release();
}
效果: