新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Android项目中怎么 ViewPager中添加一个Indicator导航?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
10年积累的成都网站建设、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有崇义免费网站建设让你可以放心的选择与我们合作。
代码如下:
<?xml version="1.0" encoding="utf-8"?>
未选中的
<?xml version="1.0" encoding="utf-8"?>
是不是很简单,就指定一个圆形,一个颜色
接下来就是定义一个selector,用来控制选中和非选中
<?xml version="1.0" encoding="utf-8"?>
然后就是mainActivity的布局文件,放置一个ViewPager,下面放置一个LinearLayout,用来装小圆点
<?xml version="1.0" encoding="utf-8"?>
接下来就是MainActivity的代码,其实很简单,都有注释,就不细说了
package com.duanlian.viewpagerindicatordemo; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import android.widget.LinearLayout; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ViewPager mViewPager; private LinearLayout mLinear; private ListmList; private PagerAdapter mPagerAdapter; private int[] imageArray = {R.mipmap.banner1, R.mipmap.banner2, R.mipmap.banner3, R.mipmap.ic_launcher}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initPoint(); } private void initView() { mViewPager = (ViewPager) findViewById(R.id.viewpager); mLinear = (LinearLayout) findViewById(R.id.linear); //给ViewPager添加图片显示 mList = new ArrayList<>(); for (int i = 0; i < imageArray.length; i++) { ImageView imageView = new ImageView(this); imageView.setImageResource(imageArray[i]); mList.add(imageView); } mPagerAdapter = new PagerAdapter(mList); mViewPager.setAdapter(mPagerAdapter); //ViewPager切换的监听事件 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { position = position % mList.size();// 需要对position的值进行重新赋值,否则会造成数组越界 // 更新小圆点的显示 for (int i = 0; i < mList.size(); i++) { ImageView iv = (ImageView) mLinear.getChildAt(i); // 当前滑到的是那一页就让第几个小圆点处于选中状态 if (position == i) { iv.setEnabled(true); } else { iv.setEnabled(false); } } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } /** * 初始化指示器 */ private void initPoint() { for (int i = 0; i < mList.size(); i++) { // 往llContainer添加一个小圆点 ImageView iv = new ImageView(this); //设置背景 iv.setImageResource(R.drawable.indicator_viewpager_selector); //设置原点大小 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(30, 30); //如果是切好的图片就直接自适应 // LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); iv.setLayoutParams(params); // 默认第0个小圆点显示红色 if (i == 0) { iv.setEnabled(true); } else { iv.setEnabled(false); } //设置原点之间的间距 iv.setPadding(5, 5, 5, 5); //添加到LinearLayout中 mLinear.addView(iv); } } }
最后附上ViewPager的adapter
package com.duanlian.viewpagerindicatordemo; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import java.util.List; /** * viewPager的adapter */ public class PagerAdapter extends android.support.v4.view.PagerAdapter{ private Listlist; public PagerAdapter(List list) { this.list = list; } @Override public int getCount() { return list.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(list.get(position));//添加页卡 return list.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(list.get(position));//删除页卡 } }
看完上述内容,你们掌握Android项目中怎么 ViewPager中添加一个Indicator导航的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!