欢迎页导航页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;
    @Override
    protected 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{

        @Override
        public int getCount() {
            return mArrayList.size(); //返回记录的view最大数量
        }

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Log.d("TAG", "instantiateItem: "+position);
            container.addView(mArrayList.get(position));
            return mArrayList.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(mArrayList.get(position));
        }
    }
    //监听页面状态
    class  ViewPagerChangeListener implements ViewPager.OnPageChangeListener {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }
        @Override
        public void onPageSelected(int position) {  //翻到最后一页才显示按钮
            if(position==mArrayList.size()-1){
                mButton.setVisibility(View.VISIBLE);
                startAnimation(mButton);
            }else {
                mButton.setVisibility(View.GONE);
            }
            mDotPointerView.refreshPointer(position); //刷新圆点UI,传入当前选中的页面位置
        }
        @Override
        public 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群


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值