一个引导页的实现

摘要:
写了一个引导页,首先看看效果吧。这个实现的方法是上面是3个Fragment切换,中间是显示的点指示器,最下面是进入到下一个Activity的按钮。3个Fragment的创建就不在详细说了,基本没啥东西。˃dotselector.xml的代码˂?

写了一个引导页,首先看看效果吧。

一个引导页的实现第1张

这个实现的方法是上面是3个Fragment切换,中间是显示的点指示器,最下面是进入到下一个Activity的按钮。

3个Fragment的创建就不在详细说了,基本没啥东西。

Fragment的Adapter如下:

public class GuideFragmetAdapter extendsFragmentPagerAdapter {
    public List<Fragment>mFragmentList;

    public GuideFragmetAdapter(FragmentManager fm, List<Fragment>fragmentList) {
        super(fm);
        mFragmentList=fragmentList;
    }

    @Override
    public Fragment getItem(intposition) {

        return mFragmentList==null?null:mFragmentList.get(position);
    }

    @Override
    public intgetCount() {
        return mFragmentList==null?0:mFragmentList.size();
    }
}

下面是GuideActivity的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_guide1"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent">
    <RelativeLayout
        android:id="@+id/activity_guide"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1">
        <android.support.v4.view.ViewPager
            android:id="@+id/vp_guide"android:layout_width="match_parent"android:layout_height="match_parent">
            <requestFocus />
        </android.support.v4.view.ViewPager>
        <LinearLayout
            android:id="@+id/ll_indicator"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:gravity="center"android:layout_marginBottom="45dip"
            >
        </LinearLayout>
    </RelativeLayout>
    <Button
        android:id="@+id/btn_ready_use"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_marginRight="50dp"android:layout_marginLeft="50dp"android:layout_marginBottom="20dp"android:layout_marginTop="10dp"android:background="@drawable/guide_ready_use"android:textColor="@color/color_white"android:textSize="@dimen/sp_eighteen"android:text="马上使用"/>
</LinearLayout>

dotselector.xml的代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/ic_guide_selected" android:state_selected="true"/>
    <item android:drawable="@drawable/ic_guide_unselected" android:state_selected="false"/>
</selector>

ic_guide_selected.xml的代码

<vector android:  android:viewportHeight="1024.0"android:viewportWidth="1024.0" android:  xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#1296db" android:pathData="M480,480m-416,0a6.5,6.5 0,1 0,832 0,6.5 6.5,0 1,0 -832,0Z"/>
</vector>

ic_guide_unselected.xml的代码

<vector android:  android:viewportHeight="1024.0"android:viewportWidth="1024.0" android:  xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#FF000000" android:pathData="M510.8,960c-60.5,0 -119.2,-11.9 -174.5,-35.2 -53.4,-22.6 -101.3,-54.9 -142.5,-96 -41.2,-41.2 -73.5,-89.1 -96,-142.5 -23.4,-55.3 -35.2,-114 -35.2,-174.5 0,-60.5 11.9,-119.2 35.2,-174.5 22.6,-53.4 54.9,-101.3 96,-142.5 41.2,-41.2 89.1,-73.5 142.5,-96 55.3,-23.4 114,-35.2 174.5,-35.2 60.5,0 119.2,11.9 174.5,35.2 53.4,22.6 101.3,54.9 142.5,96 41.2,41.2 73.5,89.1 96,142.5 23.4,55.3 35.2,114 35.2,174.5 0,60.5 -11.9,119.2 -35.2,174.5 -22.6,53.4 -54.9,101.3 -96,142.5 -41.2,41.2 -89.1,73.5 -142.5,96C630,948.1 571.3,960 510.8,960zM510.8,94.3c-56.4,0 -111,11 -162.5,32.8 -49.7,21 -94.4,51.1 -132.7,89.5 -38.3,38.3 -68.5,83 -89.5,132.7 -21.8,51.5 -32.8,106.1 -32.8,162.5 0,56.4 11,111 32.8,162.5 21,49.7 51.1,94.4 89.5,132.7 38.3,38.3 83,68.5 132.7,89.5 51.5,21.8 106.1,32.8 162.5,32.8s111,-11 162.5,-32.8c49.7,-21 94.4,-51.1 132.7,-89.5 38.3,-38.3 68.5,-83 89.5,-132.7 21.8,-51.5 32.8,-106.1 32.8,-162.5 0,-56.4 -11,-111 -32.8,-162.5 -21,-49.7 -51.1,-94.4 -89.5,-132.7 -38.3,-38.3 -83,-68.5 -132.7,-89.5C621.8,105.3 567.1,94.3 510.8,94.3z"/>
</vector>

GuideActivity里面的代码:

public class GuideActivity extends AppCompatActivity implementsView.OnClickListener{
    privateViewPager mVpGuide;
    private List<Fragment>fragmentList;
    privateLinearLayout mLlIndicator;
    private ImageView[] dotViews;//小圆点
@Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_guide);
        initView();

        fragmentList=new ArrayList<Fragment>();
        fragmentList.add(newGuideOneFragment());
        fragmentList.add(newGuideTwoFragment());
        fragmentList.add(newGuideThreeFragment());
        mVpGuide.setAdapter(newGuideFragmetAdapter(getSupportFragmentManager(),fragmentList));
        mVpGuide.setCurrentItem(0);
        mVpGuide.setOnPageChangeListener(newMyPagerChangeListener());

        setIndicator();
    }

    private voidinitView() {
        mVpGuide=findViewById(R.id.vp_guide);
        findViewById(R.id.btn_ready_use).setOnClickListener(this);
        mLlIndicator=findViewById(R.id.ll_indicator);
    }
    private voidsetIndicator(){
        LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(20, 20);
        mParams.setMargins(10, 0, 10,0);//设置小圆点左右之间的间隔
        dotViews = newImageView[fragmentList.size()];
        //判断小圆点的数量,从0开始,0表示第一个
        for(int i = 0; i < fragmentList.size(); i++)
        {
            ImageView imageView = new ImageView(this);
            imageView.setLayoutParams(mParams);
            imageView.setImageResource(R.drawable.dot_selector);
            if(i== 0)
            {
                imageView.setSelected(true);//默认启动时,选中第一个小圆点
}
            else{
                imageView.setSelected(false);
            }
            dotViews[i] = imageView;//得到每个小圆点的引用,用于滑动页面时,(onPageSelected方法中)更改它们的状态。
            mLlIndicator.addView(imageView);//添加到布局里面显示
}

    }
    @Override
    public voidonClick(View v) {
        switch(v.getId()){
            caseR.id.btn_ready_use:
                Intent intent = new Intent(GuideActivity.this, LoginActivity.class);
                startActivity(intent);
                finish();
                break;
        }
    }
    /*** 设置一个ViewPager的侦听事件,当左右滑动ViewPager时菜单栏被选中状态跟着改变
     */
    public class MyPagerChangeListener implementsViewPager.OnPageChangeListener {

        @Override
        public void onPageScrollStateChanged(intarg0) {
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, intarg2) {
        }

        @Override
        public void onPageSelected(intarg0) {
            switch(arg0) {
                case 0:
                    dotViews[0].setSelected(true);
                    dotViews[1].setSelected(false);
                    dotViews[2].setSelected(false);
                    break;
                case 1:
                    dotViews[0].setSelected(false);
                    dotViews[1].setSelected(true);
                    dotViews[2].setSelected(false);
                    break;
                case 2:
                    dotViews[0].setSelected(false);
                    dotViews[1].setSelected(false);
                    dotViews[2].setSelected(true);
                    break;
            }
        }
    }
}

免责声明:文章转载自《一个引导页的实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ant打包报错 JRE version less than 1.8 is not supporedEclipse 运行配置(Run Configuration)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

AndroidManifest.xml文件详解(meta-data)

http://blog.csdn.net/think_soft/article/details/7567189 语法(SYNTAX): <meta-dataandroid:name="string"           android:resource="resource specification"           android:value...

Android Studio 多渠道打包

什么是Gradle  Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言。Android Studio中新建项目成功后自动下载Gradle。 Gradle有几个基本组件: 1.整个项目的gradle配置文件build.gradle // T...

mac 添加安卓设备的支持

1. 把android设备插到mac电脑上 2. 首先可以看一下之前在该mac电脑上有没有添加过这个 , 命令 : adb devices 如果显示出,下面字样,说明之前添加过了,下面就可以不用再看了。 List of devices attached 42f6940daa32bf91device 3. 添加android设备第一步:打开终端,输...

关于adb安装指定版本

由于airtest测试群控安卓手机发现adb服务端和客户端版本不一致,运行经常报错,服务端是1.0.40 而客户端为1.0.41. (注意:服务端是指手机端,客户端为电脑端,安卓七和六的版本为40.而安卓八以上的为41,所以说做群控的时候最好安装同样传的手机系统) 此时我们需要更改客户端的adb版们,此处以mac为例 经多多方查找在这个人的博客上找到了 h...

Android—TableLayout自定义表格

最近的一个项目中,需要用的表格,由于平时很少用到表格,所以,就准备到网上搜搜,发现可参考的很少,加上,自己也想多了解点TableLayout 布局,所欲就打算自己动手来实现自己需要的表格。先看看需求吧。 如图,上面这几个表格都差不多。主要区别: 1.列数不同 2.列的宽度不一定是均分的。 谈下思路: 从图我们可以看出,表头和表格可以分为两个表。...

安卓的设备的分辨率

DisplayMetrics metrice= new DisplayMetrics(); Display defaultDisplay = getWindowManager().getDefaultDisplay();defaultDisplay.getMetrics(metrice); int densityDpi = metrice.densityD...