1、视图渲染-测量-指定位置-绘制
ivRedPoint.getViewTreeObserver().addOnGlobalLayoutListener(new MyOnGlobalLayoutLisener());
2、两个指示点的间距
class MyOnGlobalLayoutLisener implements ViewTreeObserver.OnGlobalLayoutListener{
@Override
public void onGlobalLayout() {
//取消注册
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
ivRedPoint.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
//间距 = 第1点距离左边的距离 - 第0个距离左边的距离
marginLeft = llPointGroup.getChildAt(1).getLeft() - llPointGroup.getChildAt(0).getLeft();
}
}
3、ViewGroup 滑动事件监听
class MyOnPageChangeListener implements ViewPager.OnPageChangeListener{
/**
* 当页面滚动了的时候回调
* @param position 当前哪个页面滚动
* @param positionOffset 页面滑动的百分比
* @param positionOffsetPixels 页面滑动多少像数
*/
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
float leftMagin = (position + positionOffset)*marginLeft;
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) ivRedPoint.getLayoutParams();
params.leftMargin = (int) leftMagin;
ivRedPoint.setLayoutParams(params);
//最终的坐标 = 起始 + 间距间的滑动距离
}
@Override
public void onPageSelected(int position) {
if(position ==imageViews.size()-1){
//最后一个页面
btnStartMain.setVisibility(View.VISIBLE);
}else{
//隐藏
btnStartMain.setVisibility(View.GONE);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
}