package com.github.captain_miao.agera.tutorial.viewpage;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import com.github.captain_miao.agera.tutorial.R;
import com.github.captain_miao.agera.tutorial.base.BasePagerAdapter;
import com.github.captain_miao.agera.tutorial.databinding.ViewPageItemViewBinding;
import java.util.ArrayList;
import java.util.List;
/**
* new user guide
*/
public class ViewPageActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {
private ViewPageDotView mWelcomeDotView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
ViewPager mViewPager = (ViewPager) findViewById(R.id.view_page);
final GuideAdapter guideAdapter = new GuideAdapter(ViewPageActivity.this);
guideAdapter.addAll(getGuideViewModels());
mViewPager.setAdapter(guideAdapter);
mViewPager.addOnPageChangeListener(this);
mWelcomeDotView = (ViewPageDotView) findViewById(R.id.dot_view);
mWelcomeDotView.setNumOfCircles(guideAdapter.getCount(), getResources().getDimensionPixelSize(R.dimen.height_very_small));
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
mWelcomeDotView.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
mWelcomeDotView.onPageSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
mWelcomeDotView.onPageScrollStateChanged(state);
}
private class GuideAdapter extends BasePagerAdapter<GuideViewModel> {
public GuideAdapter(Context c) {
super(c);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
GuideViewModel model = getItem(position);
ViewPageItemViewBinding frgGuideBinding
= ViewPageItemViewBinding.inflate(mInflater, container, false);
frgGuideBinding.setViewModel(model);
container.addView(frgGuideBinding.getRoot());
return frgGuideBinding.getRoot();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
if(object instanceof View) {
container.removeView((View) object);
}
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
@SuppressWarnings("deprecation")
private List<GuideViewModel> getGuideViewModels() {
return new ArrayList<GuideViewModel>() {{
add(new GuideViewModel(getResources().getColor(R.color.guide_bg_color_1), getString(R.string.guide_title_1),
getString(R.string.guide_description_1), R.drawable.guide_1));
add(new GuideViewModel(getResources().getColor(R.color.guide_bg_color_2), getString(R.string.guide_title_2),
getString(R.string.guide_description_2), R.drawable.guide_2));
add(new GuideViewModel(getResources().getColor(R.color.guide_bg_color_3), getString(R.string.guide_title_3),
getString(R.string.guide_description_3), R.drawable.guide_3));
}};
}
}