Android引导页面的下方dot的设计

本文介绍如何使用LinearLayout和View实现与ViewPager同步滚动的指示器。包括创建等数量的小圆点、设置间距、添加背景以及实现红点覆盖效果。通过监听ViewPager的变化来动态调整红点位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、保证小圆点的数量和ViewPager的pager数量相同。
动态的设置,View对象,添加background, 选择drawable下面的shape文件。 需要注意的是需要用layoutparams为小圆点设置宽高。其父控件的layoutparams.
2、父控件(Linearlayout 水平方向),要将view对象添加到自己内部。

3、注意设置原点之间的间距marginLeft这个方法在Parms中。

注意对小圆点的父控件的linearLayout的设置。

    for(int i =0; i<mImageViewList.size();i++){

            point= new View(this);
            point.setBackgroundResource(R.drawable.dot_guide_shape); //创建与ViewPager相同数量的小圆点,灰色。

            //父控件设置控件的宽高参数。
            LinearLayout.LayoutParams   params =  new LinearLayout.LayoutParams(10, 10);
            point.setLayoutParams(params);
            //将布局文件添加到 父控件中。
            ll_point_group.addView(point);
            if(i>0){
                params.leftMargin=8;  //设置小圆点之间的间距。
            }

        }

红点覆盖在灰点的上面:

在LinearLayout上面覆盖个相对布局。
  <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="25dp" >

        <LinearLayout
            android:id="@+id/ll_point_group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" />

        <View
            android:layout_width="10dp"
            android:layout_height="10dp"
            android:background="@drawable/dot_red_shape" />
    </RelativeLayout>

覆盖在小灰点上的小红点跟随viewPager的page页面移动的原理: ViewPager 有一个onpagechangeListener页面变化的监听。

vp.setOnPageChangeListener(new OnPageChangeListener() 
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                // TODO Auto-generated method stub
                // 將小圆点的距离动态予以改変。 保证小红点和page页面能同步。
                int len = (int) ((int) (mPointwidth * positionOffset) + position * mPointwidth); // 这个距离是滑动过程成中不断的改变小红点的位置。
                RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view_red_point.getLayoutParams();

                params.leftMargin = len; // 动态将小红点的位置改变。

                view_red_point.setLayoutParams(params);
            }

像素和dp之间有转换关系。

关联源码: E:\ProgramFiles\adt-bundle-windows-x86_64-20140702\sdk\extras\android\support\v4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值