欢迎页导航页SplashActivity-仿ClassIn-页面布局系列

2023-10-19 09:32

本文主要是介绍欢迎页导航页SplashActivity-仿ClassIn-页面布局系列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Splash Activity 欢迎页-仿ClassIn


  • 完整代码ZIP:下载
    *更多其他页面-自定义View-实用功能合集:点击查看

带圆点指示器可以浏览这篇文章点击跳转
带条形指示器可以浏览这篇文章点击跳转


实现步骤:
1.使用ViewPager实现左右翻页layout
2.自定义绘制组件DotPointerView,通过监听ViewPager.OnPageChangeListener刷新绘制圆点指示器
3.滑动至第三页时,显示按钮,并为按钮添加属性动画使其向上位移
在这里插入图片描述

SplashTwoActivity


/*** 作者:YFZ* 简介:导航页,翻到最后一页显示按钮* Android技术生活-QQ交流群:723592501* 风格1:添加自绘制的翻页圆点指示,动画按钮*       模仿APP "ClassIn" 的欢迎页*/
public class SplashTwoActivity extends AppCompatActivity {private LayoutInflater layoutInflater;private ViewPager mViewPager;private ArrayList<View> mArrayList;private View mView1,mView2,mView3;private Button mButton;private DotPointerView mDotPointerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {Util.fullScreen(this);super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash_two);initialView();initialViewPager();}private void initialView(){layoutInflater=getLayoutInflater().from(this);mViewPager=findViewById(R.id.viewPager);mButton=findViewById(R.id.button);mDotPointerView =findViewById(R.id.dotLayout);mView1=layoutInflater.inflate(R.layout.splash_two_view_1,null);mView2=layoutInflater.inflate(R.layout.splash_two_view_2,null);mView3=layoutInflater.inflate(R.layout.splash_two_view_3,null);mArrayList=new ArrayList<>(); //将想要展示的view储存到数组中mArrayList.add(mView1);mArrayList.add(mView2);mArrayList.add(mView3);mViewPager.setAdapter(new ViewPagerAdapter()); //添加视图桥梁mViewPager.setOnPageChangeListener(new ViewPagerChangeListener()); //监听页面状态mViewPager.setOffscreenPageLimit(mArrayList.size()-1);  //允许最大view缓存数量mViewPager.setOverScrollMode(mViewPager.OVER_SCROLL_NEVER); //去掉翻到顶页和尾页的水波纹mDotPointerView.setPointerStyle(mArrayList.size(),10,10,10,getResources().getDrawable(R.drawable.splash_two_dot_selected),getResources().getDrawable(R.drawable.splash_two_dot_unselected));}private void initialViewPager(){}//添加切换页面class ViewPagerAdapter extends PagerAdapter{@Overridepublic int getCount() {return mArrayList.size(); //返回记录的view最大数量}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view==object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {Log.d("TAG", "instantiateItem: "+position);container.addView(mArrayList.get(position));return mArrayList.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(mArrayList.get(position));}}//监听页面状态class  ViewPagerChangeListener implements ViewPager.OnPageChangeListener {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {  //翻到最后一页才显示按钮if(position==mArrayList.size()-1){mButton.setVisibility(View.VISIBLE);startAnimation(mButton);}else {mButton.setVisibility(View.GONE);}mDotPointerView.refreshPointer(position); //刷新圆点UI,传入当前选中的页面位置}@Overridepublic void onPageScrollStateChanged(int state) {}}//结束按钮public void clickFinish(View view){finish();}//按钮动画private void startAnimation(View view){ObjectAnimator objectAnimator= ObjectAnimator.ofFloat(view,"translationY",150f,0f);objectAnimator.setDuration(300);objectAnimator.start();}

Android技术生活交流

q群


这篇关于欢迎页导航页SplashActivity-仿ClassIn-页面布局系列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238940

相关文章

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm