viewpage启动页
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.viewpager.widget.ViewPager android:id="@+id/first_viewpager" android:layout_width="match_parent" android:layout_height="match_parent" > </androidx.viewpager.widget.ViewPager> <LinearLayout android:id="@+id/viewpager_tag_viewgroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="32dp" android:gravity="center_horizontal" android:orientation="horizontal" android:layout_marginRight="60px" android:padding="20dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent"></LinearLayout> <Button android:id="@+id/view_pager_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/viewpager_tag_viewgroup" android:layout_centerHorizontal="true" android:layout_marginBottom="128dp" android:background="@drawable/shap3" android:text="立即体验" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
public class MainActivity extends Activity implements ViewPager.OnPageChangeListener { private ViewPager mViewPager; //图片资源的数组 private int[] mImageIdArray; //图片的集合 private List<View> mViewList; //放置圆点 private ViewGroup mViewGroup; //实例化圆点View private ImageView mImageView; private ImageView[] mImageViewArray; //最后一页的按钮 private Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); mButton = (Button) findViewById(R.id.view_pager_button); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // startActivity(new Intent(ViewPagerActivity.this, LoginActivity.class)); // finish(); } }); //加载ViewPager initViewpager(); //加载底部圆点 initViewPagerTag(); } /** * 加载底部圆点 */ private void initViewPagerTag() { //这里实例化LinearLayout mViewGroup = (ViewGroup) findViewById(R.id.viewpager_tag_viewgroup); //根据ViewPager的item数量实例化数组 mImageViewArray = new ImageView[mViewList.size()]; //循环新建底部圆点imageview,将生成的imageview保存到数组中 for (int i = 0; i < mViewList.size(); i++) { mImageView = new ImageView(this); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(20, 20); layoutParams.leftMargin = 60; mImageView.setLayoutParams(layoutParams); mImageViewArray[i] = mImageView; //第一个页面需要设为选中状态,这里要使用两张不同的图片(选中与未选中) if (i == 0) { mImageView.setBackgroundResource(R.drawable.shap1); } else { mImageView.setBackgroundResource(R.drawable.shap2); } //将数组中的imageview加入到viewgroup mViewGroup.addView(mImageViewArray[i]); } } /** * 加载ViewPager */ private void initViewpager() { mViewPager = (ViewPager) findViewById(R.id.first_viewpager); //实例化图片资源 mImageIdArray = new int[]{R.drawable.lunch1, R.drawable.lunch2, R.drawable.lunch3, R.drawable.lunch4}; mViewList = new ArrayList<View>(); //获取一个layout参数,设置为match_parent LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT , LinearLayout.LayoutParams.MATCH_PARENT); //循环创建view并进入集合 for (int i = 0; i < mImageIdArray.length; i++) { //new imageview并设置全屏和图片资源 ImageView imageView = new ImageView(this); imageView.setLayoutParams(params); imageView.setBackgroundResource(mImageIdArray[i]); //将imageview加入到View集合中 mViewList.add(imageView); } //View集合数据初始化好,setAdapter就可以了 mViewPager.setAdapter(new GuidePagerAdapter(mViewList)); //添加ViewPager的滑动监听,注意是.add...以前是setOnPageChangeListener方法,已过时 mViewPager.addOnPageChangeListener(this); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } //滑动后的监听 @Override public void onPageSelected(int position) { //循环设置当前页的标记图 for (int i = 0; i < mImageViewArray.length; i++) { mImageViewArray[position].setBackgroundResource(R.drawable.shap1); if (position != i) { mImageViewArray[i].setBackgroundResource(R.drawable.shap2); } } //判断是否最后一页,是则显示button if (position == mImageViewArray.length - 1) { mButton.setVisibility(View.VISIBLE); } else { mButton.setVisibility(View.GONE); } } @Override public void onPageScrollStateChanged(int state) { } }
public class GuidePagerAdapter extends PagerAdapter { private List<View> viewList; public GuidePagerAdapter(List<View> viewList) { this.viewList = viewList; } /** * 返回页面的个数 * * @return */ @Override public int getCount() { if (viewList != null) { return viewList.size(); } return 0; } /** * 判断是否由对象生成界面 * * @param view * @param object * @return */ @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /** * 初始化position位置的界面 * * @param container * @param position * @return */ @Override public Object instantiateItem(ViewGroup container, int position) { ((ViewPager) container).addView(viewList.get(position), 0); return viewList.get(position); } /** * 移除页面 * * @param container * @param position * @param object */ @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager) container).removeView(viewList.get(position)); } }
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="5dp" /> <solid android:color="@android:color/white" /> </shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <corners android:radius="5dp" /> <solid android:color="@android:color/darker_gray" /> </shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="10dp" /> <solid android:color="@android:color/holo_blue_bright" /> </shape>
版权声明:本文为Ocean123123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。