Android动画壁纸使用setWallpaperOffsets与ViewPager滚动

时间:2016-01-10 08:16:21

标签: android android-launcher android-wallpaper

我正在制作一个Android启动器,我想在页面滚动时滚动壁纸,所以我将一个onPageChangeListener添加到mViewPager并更改壁纸偏移

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener(){
            @Override
            public void onPageScrolled(int p1, float p2, int p3) {

            }

            @Override
            public void onPageSelected(int p1) {
               WallpaperManager.getInstance(c).setWallpaperOffsets(v.getWindowToken(),(float)p1/(myPageItemsCount-1), 0);
            }

            @Override
            public void onPageScrollStateChanged(int p1) {

            }
        });

问题是我希望壁纸在页面更改时平滑滚动,但在上面的代码中,它会直接将壁纸更改为相应的位置,请帮忙。

1 个答案:

答案 0 :(得分:4)

这就是我所做的,它的作用就像一个魅力:

pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            WallpaperManager.getInstance(getBaseContext()).setWallpaperOffsets(pager.getWindowToken(), (float) (position + positionOffset) / (myPageItemsCount-1), 0);
        }

        @Override
        public void onPageSelected(int position) {
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
}