用ViewPager与Fragment结合做的主界面,下面的Tab也是一个Fragment。
在MainActivity中,onPageScrolled方法
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
/**
* 根据page位置和偏移量设置指定tabItem的颜色渐变
*/
tabFragment = (WXTabFragment) fm
.findFragmentById(R.id.tabContainer);
// position=0时不能向左渐变,=3时不能向右渐变
if(position<3)
tabFragment.setAlpha(position, position + 1, positionOffset);
// ToDo 为何第一次从0向1滑动时,1没有渐变效果?
}
TagFragment中的方法setAlpha(int from, int to, float positionOffset)如下:
@SuppressLint("NewApi")
public void setAlpha(int from, int to, float positionOffset) {
// getItem方法取得指定Item的WXTabItem实例
WXTabItem fromItem = getItem(from);
WXTabItem toItem = getItem(to);
// initAlpha为WXTabItem实例中的ImageView设置透明度
toItem.initAlpha(positionOffset);
fromItem.initAlpha(1 - positionOffset);
}
不知道是不是ViewPager加载子View的方式的原因。。。
做出来的结果是,从“微信”向“通讯录”滑动时,只有“微信”的图片发生了渐变,“通讯录”没有变化。
而当到“通讯录”界面后,再向”微信“滑动就都有了渐变效果。如下图:
大神些,求解答,最好是能简单地描述下ViewPager的突出特点。
PS: 原版微信是用的ViewPager吗?
------解决思路----------------------
用ViewPager 是可以做出微信的效果,ViewPager+Fragment这种模式也很多。