欢迎页导航页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

相关文章

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

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

使用JavaScript将PDF页面中的标注扁平化的操作指南

《使用JavaScript将PDF页面中的标注扁平化的操作指南》扁平化(flatten)操作可以将标注作为矢量图形包含在PDF页面的内容中,使其不可编辑,DynamsoftDocumentViewer... 目录使用Dynamsoft Document Viewer打开一个PDF文件并启用标注添加功能扁平化

SpringBoot如何访问jsp页面

《SpringBoot如何访问jsp页面》本文介绍了如何在SpringBoot项目中进行Web开发,包括创建项目、配置文件、添加依赖、控制层修改、测试效果以及在IDEA中进行配置的详细步骤... 目录SpringBoot如何访问JSP页python面简介实现步骤1. 首先创建的项目一定要是web项目2. 在

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert