前两篇博客:

Android 弧形转盘的实现(一),弧形列表;

Android 弧形转盘的实现(二),列表自动选中;RecyclerView滑动后自动选中居中的条目,RecyclerView实现WheelView效果;

已经大致实现了弧形转盘的效果,还有一个动画需要做,这个比较简单;

Android 弧形列表转盘的实现(三),View跟随RecyclerView做旋转动画;_第1张图片

效果图左边的刻度轮盘是个半圆,其实应该是个整圆只显示一半,另外一半在屏幕外面;

尝试使用PaddingLift把ImageView挤到屏幕外面,默认效果是可以,但是旋转的时候也是个半圆在旋转,这样就不行了;索性直接设置IamgeView是整个圆,然后做平移动画,移动一半位置到屏幕外面;

1、平移,只显示半圆;

ImageView控件时固定宽高的 400*400的 , 直接X轴移动-200dp;

iv = findViewById(R.id.iv);setTranslationX(iv , UiUtils.dip2px(this , 200)*-1);
public void setTranslationX(View view , float dy) {        ObjectAnimator translationYAnimator = ObjectAnimator.ofFloat(view,"translationX",0f,dy);        translationYAnimator.setDuration(1L);        translationYAnimator.start();    }

2、ImageView轮盘跟随RecyclerView滑动做旋转动画;

一定要用float类型 , 不然会丢失精度;

 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                float dyy = dy*-1;                setRotate(dyy/4);            }        });
    private float values = 0f;    private float newValues = 0f;    private ObjectAnimator rotationAnimator;    public void setRotate(float dy) {        if (rotationAnimator == null)            rotationAnimator = ObjectAnimator.ofFloat(iv,"rotation",0f,10f);        newValues = values + dy;        rotationAnimator.setDuration(10L);        rotationAnimator.setFloatValues(values,newValues);        rotationAnimator.start();        values = newValues;    }

完工,看效果! (没有轮盘图片,就用的Android的默认启动图标;)

图片有点大,加载可能稍微慢一点,GIF图感觉卡卡的,想体验效果还请下载代码自己运行起来看看;

代码已上传:https://github.com/CuiChenbo/ArcSelectList , 欢迎Star

更多相关文章

  1. 将Android Studio里的EditText控件弄成圆角(即背景设置为弧形)
  2. [Android]CircleList 圆弧形 ListView
  3. Android绘制一条边为弧形的矩形
  4. Android 弧形进度条
  5. android仿漫画源码、抽奖转盘、Google相册、动画源码等
  6. PHP实现大转盘抽奖算法(代码实例)
  7. php大转盘抽奖算法
  8. Android圆弧形ListView的实现

随机推荐

  1. API 25 (Android(安卓)7.1.1 API) widget
  2. Android(安卓)Init Language
  3. android中的多媒体应用camera
  4. Android之SurfaceView学习一
  5. Exploring the world of Android
  6. Android(安卓)adb error: “device not f
  7. android 唤醒屏幕并解锁
  8. android 多线程并发下载文件
  9. AndEngine实现多点触控
  10. Android播放系统声音源码