public class PointPageView extends View {
private int mPageSize;
private int mPageIndex;
private int mPointSize;
private int mPointSpan;
private int mSelectPointSize;
private int mStep;
private int mDisplaySize;
private int mDisplayIndex;
private Paint paint;
private void init() {
mPointSize = 3;
mSelectPointSize = mPointSize;
mPointSpan = 3 * mPointSize;
mStep = 1;
paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
}
public PointPageView(Context context) {
super(context, null);
init();
}
/**
* Used to inflate the Workspace from XML.
*/
public PointPageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public void setPageSize(int pageSize) {
mPageSize = Math.max(pageSize, 0);
mDisplaySize = (int)Math.ceil((double)mPageSize / mStep);
invalidate();
}
public int getPageSize() {
return mPageSize;
}
public void setPageIndex(int pageIndex) {
mPageIndex = Math.min(Math.max(pageIndex, 0), mPageSize - 1);
mDisplayIndex = (int)Math.floor((double)mPageIndex / mStep);
invalidate();
}
public int getPageIndex() {
return mPageIndex;
}
public void setColor(int color) {
paint.setColor(color);
}
public void setPointSize(int size) {
mPointSize = size;
}
public void setSelectPointSize(int size) {
mSelectPointSize = size;
}
public void setPointSpan(int span) {
mPointSpan = span;
}
public void setStep(int step) {
mStep = step;
}
public int getStep() {
return mStep;
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
drawAllPoint(canvas);
}
private void drawAllPoint(Canvas canvas) {
canvas.save();
final int paddingLeft = mPointSpan;
final int width = getMeasuredWidth();
final int height = getMeasuredHeight();
int radius = mPointSize;
int contentWidth = (radius + paddingLeft) * mPageSize;
int beginX = (width - contentWidth) / 2;
int beginY = height / 2;
for (int i = 0; i < mDisplaySize; i++) {
if (i == mDisplayIndex) {
paint.setAlpha(255);
radius = mSelectPointSize;
} else {
paint.setAlpha(128);
radius = mPointSize;
}
canvas.drawCircle(beginX, beginY, radius, paint);
beginX = beginX + radius + radius + paddingLeft;
}
canvas.restore();
}
}
分享到:
相关推荐
LBannerView - 包含小圆点的轮播图控件
Android viewpager打造带小圆点的引导页,代码都有注释,简单易懂。
Android左右滑屏滚动图片,很多APP在刚安装好初次运行,都会显示一个小圆点滑屏切换图片的效果,在QQ、微信或其它APP应用安装首次运行时,会有一个导航页特效,导航页下部显示小圆点,手机左右滑屏会切换导航页中的...
android仿新闻客户端的图片轮播,带小圆点提示,图片下方有相关的描述信息,代码简洁易懂,代码量少。用户滑动和自动轮播没有冲突。
Android ViewPager 图片无限滑动和根据图片数量自动生成的小圆点
轮播——小圆点
android viewpager 实现了左右无限循环滑动 并且内附可自定义的小圆点指示器
Android使用ViewPager实现左右循环滑动及小圆点监听
Android ViewPager实现无限循环(2.加入小圆点,优化自动和手动滑动冲突) 上一篇内容只是简单的实现了viewpager的页面自动轮播,但有以下两个缺点: 1.还没有小圆点,用户看不出总共有几页,当前在哪一页。 2.固定...
小圆点指示器,自动轮播图片,dot circle indicator viewpager auto looping
基于android划动圆点源码,很不错的工具
Android自定义控件实现ViewPagerIndicator
看了好多小伙伴和我一样在寻找焦点图片对应地下小圆点的...主要框架为3部分 上半部分是图片左右切换 下半部分是textview的一个显示 并且添加了滚动条 底部就是小圆点了 当显示第几张图片的时候 第几个小圆点就会为焦点
这是一个android系统中实现翻页效果的例子,下面带有标示的圆点,来记录翻到哪个页面了。现在在程序中很经常用到,也很美观。一般android手机首个页面就是用了这个技术。
Android自定义Gallery 自定义边框 底部小圆点 自动切换
Android直播礼物选择,送礼物,左右滑动,小圆点 绝对可用
此效果是实现viewpager翻页的时候底部会有几个小圆点,随着页码的改变小圆点的位置也改变。这个效果的实现方法有很多种,网上有很多好的开源项目,这里我是自己以前写的一个实现方法,整理一下分享一下,方便以后有...
支持Tab小圆点以及数量显示和隐藏 支持自定义Tab View 支持使用Bitmap、Drawable和本地resId来显示Tab图标 支持对Tab图标替换成自定义View来加载网络图片 支持自由设置小圆点、tab大小和位置等设置 支持实现如:微博...
android 主图标 右上角 小图标 提示效果
Android viewpager banner 广告 自动轮播 博客:http://blog.csdn.net/zhi0720/article/details/24350101