Android项目中怎么ViewPager中添加一个Indicator导航
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 List mList;
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 List list;
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导航的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
当前名称:Android项目中怎么ViewPager中添加一个Indicator导航
文章URL:http://www.jxjierui.cn/article/gcisdp.html


咨询
建站咨询
