android开发教程之使用线程实现视图平滑滚动示例

2019-12-10 20:08:31王冬梅
易采站长站为您分析android使用线程实现视图平滑滚动示例,需要的朋友可以参考下    

最近一直想做下拉刷新的效果,琢磨了好久,才走到通过onTouch方法把整个视图往下拉的步骤,接下来就是能拉下来,松开手要能滑回去啊。网上看了好久,没有找到详细的下拉刷新的例子,只有自己慢慢琢磨了。昨天和今天,研究了两天,下拉之后回滚回去的效果终于今天做出来了!开心。现在来分享下我的实现方法和一些心得体会吧。
我看了网上一个大神的例子,发现是在onTouch里面使用View的scrollTo(int, int)方法,来使整个视图往下滚动的,我尝试了使用setTranslationY()来对视图进行回滚,第一次是没问题的,但多滚动几次之后,整个视图实际上已经到了非常“高”的地方了,要拉很长的距离才能看到内容。所以回滚也必须使用scrollTo(int, int)方法来操作。
但scrollTo(int, int)执行是瞬间的,方法名讲是滚动到,实际上就是“瞬移到”某个位置,因此需要一步一步的去瞬移它,让它看上去是滚过去的……

因为等下要去跑步了,还有就是也没有什么很多的要点需要讲解,我就直接上代码给大家看,注释都写好了,要点会单独提一下,更详细的讲解与心得就等着我哪天把下拉刷新实现了吧。

 

复制代码
/**
     * @desc    平滑滚动
     * @param    v        需要操控的视图
     * @param    fromY    起始Y坐标
     * @param    toY        终止Y坐标
     * @param    fps        帧率
     * @param    durtion    动画完成时间(毫秒)    
     * */
    private void smoothScroll(View v, int fromY, int toY, int fps, long durtion) {  
        smoothScrollThread = new SmoothScrollThread(v, fromY, toY, durtion, fps);
        smoothScrollThread.run();
    }

    /**
     * @desc    平滑滚动线程,用于递归调用自己来实现某个视图的平滑滚动
     * */
    class SmoothScrollThread implements Runnable {    
        //需要操控的视图