Splash Activity 欢迎页-仿ClassIn
带圆点指示器可以浏览这篇文章点击跳转
带条形指示器可以浏览这篇文章点击跳转
实现步骤:
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群
![]()


1057

被折叠的 条评论
为什么被折叠?



