简单引导页实现

页面逻辑

1.用户打开App,进入欢迎页,在欢迎页中判断用户是否第一次使用App(可以用Shared Preference记录用户使用状态)。
2.如果用户第一次使用App,进入引导页,用户可以通过左右滑动查看当前展示页面,页面可以是广告,也可以是App使用说明。
3.当用户滑动到最后一页时,让指示器消失,同时显示立即进入按钮

1.指示器

这里我选择用一个轻量级的viewpager指示器

项目地址;https://github.com/ongakuer/CircleIndicator

dependencies {
    implementation 'me.relex:circleindicator:1.2.2@aar'
}

2.XML(R.layout.activity_hello2)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <me.relex.circleindicator.CircleIndicator
        android:id="@+id/indicator"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        app:ci_drawable="@drawable/dian"
        app:ci_drawable_unselected="@drawable/dian_un" />

</RelativeLayout>

3.XML(R.layout.fragment_four)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/wel4">

    <ImageView
        android:id="@+id/iv_enter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="45dp"
        android:src="@drawable/enter"/>

</RelativeLayout>

4.Hello2Activity

public class Hello2Activity extends BaseActivity {

    private static final String TAB = "Hello2Activity";
    private View view1, view2, view3, view4;
    private ArrayList<View> viewList = new ArrayList<>();
    private PagerAdapter mAdapter;

    @BindView(R.id.viewpager)
    ViewPager viewpager;
    @BindView(R.id.indicator)
    CircleIndicator indicator;

    @Override
    protected void initLayout() {
        setContentView(R.layout.activity_hello2);
    }

    @Override
    protected void initData() {
        view1 = Utils.getInflater().inflate(R.layout.fragment_one, null);
        view2 = Utils.getInflater().inflate(R.layout.fragment_two, null);
        view3 = Utils.getInflater().inflate(R.layout.fragment_three, null);
        view4 = Utils.getInflater().inflate(R.layout.fragment_four, null);

        viewList.add(view1);
        viewList.add(view2);
        viewList.add(view3);
        viewList.add(view4);

        mAdapter = new PagerAdapter() {
            @Override
            public int getCount() {
                return viewList.size();
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == object;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView(viewList.get(position));
            }

            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                container.addView(viewList.get(position));
                return viewList.get(position);
            }
        };

        viewpager.setAdapter(mAdapter);
        indicator.setViewPager(viewpager);
        view4.findViewById(R.id.iv_enter).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(mActivity, MainActivity.class);
                startActivity(it);
                finish();
            }
        });
        viewpager.setCurrentItem(0);
    }

    @Override
    protected void initView() {
        viewpager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                if (position == 3) {
                    indicator.setVisibility(View.GONE);
                } else {
                    indicator.setVisibility(View.VISIBLE);
                }
            }
        });
    }
}

OK,到此一个简单的引导页就完成了,感谢^_^

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的Android代码实现新手引导蒙板页的示例: 1. 首先,在布局文件中创建一个FrameLayout,并在其中添加需要展示的View,例如: ```xml <FrameLayout android:id="@+id/guide_container" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/image" /> </FrameLayout> ``` 2. 在Activity中,创建一个View用于展示蒙板,并在其上绘制需要展示的区域,例如: ```java public class GuideActivity extends AppCompatActivity { private View mMaskView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_guide); // 获取布局容器 FrameLayout container = findViewById(R.id.guide_container); // 创建蒙板View mMaskView = new View(this); mMaskView.setBackgroundColor(Color.parseColor("#80000000")); // 绘制圆形区域,需要展示的View是ImageView int radius = getResources().getDimensionPixelSize(R.dimen.guide_radius); int[] location = new int[2]; ImageView imageView = findViewById(R.id.image_view); imageView.getLocationOnScreen(location); int centerX = location[0] + imageView.getWidth() / 2; int centerY = location[1] + imageView.getHeight() / 2; Canvas canvas = new Canvas(); Bitmap bitmap = Bitmap.createBitmap(container.getWidth(), container.getHeight(), Bitmap.Config.ARGB_8888); canvas.setBitmap(bitmap); canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); canvas.drawCircle(centerX, centerY, radius, new Paint()); // 在蒙板View上绘制Bitmap BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap); mMaskView.setBackground(drawable); // 添加蒙板View到布局容器中 container.addView(mMaskView); } } ``` 3. 在关闭蒙板页时,移除蒙板View并销毁Activity,例如: ```java public void onCloseClick(View view) { // 移除蒙板View FrameLayout container = findViewById(R.id.guide_container); container.removeView(mMaskView); // 销毁Activity finish(); } ``` 以上就是一个简单的Android代码实现新手引导蒙板页的示例,你可以根据需要进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值