智慧北京:引导页面动态点的实现

来源:互联网 发布:印度历年人口数据 编辑:程序博客网 时间:2024/05/18 00:13

注意: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 ViewmFocusPoint;// 动态的点private intmPointSpace;// 两点间的距离public void initView(){……<span style="white-space:pre"></span>mFocusPoint = findViewById(R.id.guide_focus_point);mContainerPoint.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){@Overridepublic void onGlobalLayout(){// TODO Auto-generated method stubmContainerPoint.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); }



0 0
原创粉丝点击