当前位置 博文首页 > 李猫er:【Android项目实战 | 从零开始写app(三)】实现引导页,

    李猫er:【Android项目实战 | 从零开始写app(三)】实现引导页,

    作者:[db:作者] 时间:2021-07-08 15:33

    文章导航

    一、【Android项目实战 | 从零开始写app(一)】 创建项目

    二、【Android项目实战 | 从零开始写app(二)】实现闪屏页,启动app

    三、【Android项目实战 | 从零开始写app(三)】实现引导页,进入登录or主页面

    四、【Android项目实战 | 从零开始写app(四)】Okhttp+Gson实现服务端登录验证功能

    五、【Android项目实战 | 从零开始写app(五)】okhttp+gson实现服务端注册功能

    六、【Android项目实战 | 从零开始写app(六)】用TabLayout+ViewPager搭建App 框架主页面底部导航栏

    七、【Android项目实战 | 从零开始写app(七)】优化主页导航栏,禁用主页页面滑动切换效果

    八、【Android项目实战 | 从零开始写app(八)】实现app首页广告轮播图切换和搜索跳转

    九、【Android项目实战 | 从零开始写app(九)】Tablayout+ViewPager实现页面分类顶部标题页面联动切换

    十、【Android项目实战 | 从零开始写app(十)】Okhttp+glide+json+ListView实现新闻模块数据的填充显示

    十一、【Android项目实战 | 从零开始写app(十一)】实现app首页智慧服务页面服务分类数据的解析及点击跳转

    十二、【Android项目实战 | 从零开始写app(十二)】实现app首页智慧服务&热门推荐&热门主题、新闻

    十三、【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录&信息修改等功能

    十四、【Android项目实战 | 从零开始写app(十四)】实现图片发布模块 | 必知必会之调用系统相机拍照、相册

    十五、【Android项目实战 | 从零开始写app(教程汇总)】Android 项目实战系列汇总、源代码


    本篇实现效果图:

    在这里插入图片描述

    逻辑功能实现:

    本篇的项目文件如下:
    在这里插入图片描述

    GuideActivity.class

    在GuideActivity写入下面代码:

    package com.example.myapp.activity;
    
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.viewpager.widget.ViewPager;
    
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    
    import com.example.myapp.MainActivity;
    import com.example.myapp.R;
    import com.example.myapp.adapter.GuideAdapter;
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class GuideActivity extends AppCompatActivity {
    
        private ViewPager vp;
        private List<ImageView> imageViews;
        private int[] imgs= {R.drawable.y0,R.drawable.y1,R.drawable.y2,R.drawable.y3};
        private Button btn;
        private ImageView[] dotViews;
        private GuideAdapter adapter;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_guide);
            vp= findViewById(R.id.guide_vp);
            btn= findViewById(R.id.guide_btn);
    
            //初始化图片
            initImgs();
            //初始化底部圆点指示器
            initDots();
            adapter= new GuideAdapter(imageViews);
            vp.setAdapter(adapter);
    
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SharedPreferences.Editor editor= getSharedPreferences("data", MODE_PRIVATE).edit();
                    editor.putString("isFirst", "1");
                    editor.commit();
                    Intent intent= new Intent(GuideActivity.this, MainActivity.class);
                    startActivity(intent);
                    finish();
                }
            });
    
            vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
                }
    
                @Override
                public void onPageSelected(int position) {
                    for (int i= 0; i< dotViews.length; i++){
                        if (position== i){
                            dotViews[i].setImageResource(R.drawable.guide_selector);
                        }else {
                            dotViews[i].setImageResource(R.drawable.guide_white);
                        }
    
                        if (position== dotViews.length- 1){
                            btn.setVisibility(View.VISIBLE);
                        }else {
                            btn.setVisibility(View.GONE);
                        }
                    }
                }
    
                @Override
                public void onPageScrollStateChanged(int state) {
    
                }
            });
    
        }
    
        /**
         * 初始化底部圆点指示器
         */
        private void initDots() {
            LinearLayout layout= findViewById(R.id.guide_ll);
            LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(20, 20);
            params.setMargins(10, 0, 10, 0);
            dotViews= new ImageView[imgs.length];
            for (int i= 0; i< imageViews.size(); i++){
                ImageView imageView= new ImageView(this);
                imageView.setLayoutParams(params);
                imageView.setImageResource(R.drawable.guide_white);
                if (i== 0){
                    imageView.setImageResource(R.drawable.guide_selector);
                }else{
                    imageView.setImageResource(R.drawable.guide_white);
                }
                dotViews[i]= imageView;
                final int finalI = i;
                dotViews[i].setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        vp.setCurrentItem(finalI);
                    }
                });
                layout.addView(imageView);
            }
        }
    
        /**
         * 初始化图片
         */
        private void initImgs() {
            ViewPager.LayoutParams params= new ViewPager.LayoutParams();
            imageViews= new ArrayList<ImageView>();
            for (int i= 0; i< imgs.length; i++){
                ImageView imageView= new ImageView(this);
                imageView.setLayoutParams(params);
                imageView.setImageResource(imgs[i]);
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageViews.add(imageView);
            }
        }
    
    
    }
    
    

    适配器

    在adapter文件夹新建GuideAdapter.class 类,继承PagerAdapter 类,重写其中的几个方法:

    GuideAdapter.class:

    package com.example.myapp.adapter;
    
    /**
     * @ProjectName: MyApp
     * @Package: com.example.myapp.adapter
     * @ClassName: GuideAdapter
     * @Description:
     * @Author: liyingxia
     * @CreateDate: 2021/4/13 13:41
     */