先看下效果
小圆点的形状和颜色都是可以自己定义的,看需求
首先第一步,滑2个圆点,一个是选中后的圆点,一个是未选中的圆点,看选中的圆点shape
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <solid android:color="@color/colorPrimary"/> </shape>
未选中的
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <solid android:color="@color/colorAccent"/> </shape>
是不是很简单,就指定一个圆形,一个颜色
接下来就是定义一个selector,用来控制选中和非选中
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/indicator_checked_shape" android:state_enabled="true"/> <item android:drawable="@drawable/indicator_unchecked_shape" android:state_enabled="false"/> </selector>
然后就是mainActivity的布局文件,放置一个ViewPager,下面放置一个LinearLayout,用来装小圆点
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.duanlian.viewpagerindicatordemo.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="170dp"
/>
<LinearLayout
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@+id/viewpager"
android:layout_marginTop="-40dp"
android:gravity="center"
android:orientation="horizontal"></LinearLayout>
</RelativeLayout>
接下来就是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<ImageView> 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<ImageView> list;
public PagerAdapter(List<ImageView> 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实现导航
# Android中TabLayout+ViewPager 简单实现app底部Tab导航栏
# Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+F
# Android 利用ViewPager+GridView实现首页导航栏布局分页效果
# Android 中 TabHost与ViewPager结合实现首页导航效果
# ViewPager顶部导航栏联动效果(标题栏条目多)
# Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果
# Android ViewPager制作新手导航页(动态加载)
# Android ViewPager导航小圆点实现无限循环效果
# 小圆点
# 圆点
# 的是
# 都是
# 几个
# 都有
# 就不
# 很简单
# 则会
# 先看
# 大家多多
# 自适应
# 其实很简单
# 滑到
# layout_width
# id
# activity_main
# match_parent
# duanlian
# viewpagerindicatordemo
相关文章:
学校为何禁止电信移动建设网站?
北京制作网站的公司,北京铁路集团官方网站?
如何在服务器上配置二级域名建站?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何选择高效稳定的ISP建站解决方案?
已有域名和空间如何快速搭建网站?
C++如何编写函数模板?(泛型编程入门)
Python如何创建带属性的XML节点
nginx修改上传文件大小限制的方法
建站之星安装失败:服务器环境不兼容?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何通过可视化优化提升建站效果?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何配置FTP站点权限与安全设置?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
网站图片在线制作软件,怎么在图片上做链接?
网站制作网站,深圳做网站哪家比较好?
如何零基础在云服务器搭建WordPress站点?
制作电商网页,电商供应链怎么做?
行程制作网站有哪些,第三方机票电子行程单怎么开?
网站按钮制作软件,如何实现网页中按钮的自动点击?
焦点电影公司作品,电影焦点结局是什么?
c++怎么用jemalloc c++替换默认内存分配器【性能】
,石家庄四十八中学官网?
高端网站建设与定制开发一站式解决方案 中企动力
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
网站制作软件有哪些,制图软件有哪些?
建站之星如何快速解决建站难题?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何用西部建站助手快速创建专业网站?
建站之星logo尺寸如何设置最合适?
如何选择最佳自助建站系统?快速指南解析优劣
c# 在高并发场景下,委托和接口调用的性能对比
做企业网站制作流程,企业网站制作基本流程有哪些?
如何在腾讯云服务器上快速搭建个人网站?
如何通过网站建站时间优化SEO与用户体验?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
如何使用Golang安装API文档生成工具_快速生成接口文档
小建面朝正北,A点实际方位是否存在偏差?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
韩国服务器如何优化跨境访问实现高效连接?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
*请认真填写需求信息,我们会在24小时内与您取得联系。