注意:在LayoutParams使用的参数单位是pixels,px = dp * (dpi / 160)
1、用Relativelayout覆盖
<!-- 静态点容器 -->
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp" >
<LinearLayout
android:id="@+id/guide_container_point"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
<!-- 动态的点 -->
<View
android:id="@+id/guide_focus_point"
android:layout_width="10dp"
android:layout_height="10dp"
android:background="@drawable/guide_point_focus" />
</RelativeLayout>
</RelativeLayout>
2、实现点的形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="#CCCCCC"/>
<corners android:radius="5dp"/>
</shape>
3、实现点的移动
private View mFocusPoint; // 动态的点
private int mPointSpace; // 两点间的距离
public void initView(){……
<span style="white-space:pre"> </span>mFocusPoint = findViewById(R.id.guide_focus_point);
mContainerPoint.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
// TODO Auto-generated method stub
mContainerPoint.getViewTreeObserver()
.removeOnGlobalLayoutListener(this);
// mPointSpace = mContainerPoint.getChildAt(1).getLeft()
// - mContainerPoint.getChildAt(0).getLeft();
mPointSpace = mContainerPoint.getChildAt(1).getLeft()
- mContainerPoint.getChildAt(0).getLeft();
}
});<pre name="code" class="html">}
public void onPageScrolled(int position, float positionOffset,int positionOffsetPixels)
{
// 页面滚动时
// positionOffset:滑动的百分比
// positionOffsetPixels:滑动的像素
int leftMargin = (int) (mPointSpace * positionOffset + position* mPointSpace + 0.5f);
RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) mFocusPoint.getLayoutParams();
params.leftMargin = leftMargin;
mFocusPoint.setLayoutParams(params); }