本文主要是介绍欢迎页导航页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-页面布局系列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!