`
cwh643
  • 浏览: 127544 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

android上小圆点page控件

 
阅读更多
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();
	}
}
0
0
分享到:
评论

相关推荐

    listview嵌套viewpager(每行都是viewpager),并添加小圆点,及点击事件

    在Android开发中,ListView是一种常见的列表控件,用于展示大量数据。然而,有时我们需要在每个列表项中展示更丰富的信息,这时可以使用ListView嵌套ViewPager的布局方式。这个设计允许用户在每个ListView条目内滑动...

    Android ViewPager实现Banner循环播放

    -- 小圆点的父控件 --&gt; android:id="@+id/ll_dot_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:orientation=...

    新版人人滑动效果

    `ViewPager`是Android SDK中的一个控件,它可以显示多个页面并支持用户通过手势左右滑动来切换页面。在布局文件中,我们需要添加`ViewPager`标签,并配置相应的适配器来填充页面内容。 ```xml &lt;androidx.viewpager....

    ViewPager引导页

    ViewPager是Android Support Library中的一个控件,它允许用户通过水平滑动来浏览多个页面。每个页面都是一个可以单独显示的View或者Fragment。ViewPager会自动处理页面的滚动和平移效果,为用户提供流畅的交互体验...

    viewpager+分滑动的效果

    ViewPager是Android SDK中的一个控件,属于android.support.v4库,它允许用户通过手势左右滑动来浏览多个子页面。这些子页面通常由Fragment或PagerAdapter提供的View实例组成,这样可以方便地实现页面间的切换和数据...

    viewpager 的滑动图片页数

    TabLayout与ViewPager结合使用可以创建底部导航栏,而指示点通常是一系列小圆点,当前页面对应的小圆点会被高亮。 在"androidDemoviewPager"项目中,你可以找到上述步骤的具体实现,包括布局文件、适配器类以及主...

    超炫丽viewpager用户引导.rar

    ViewPager是Android SDK中的一个强大控件,常用于实现页面滑动效果,比如在启动应用时展示的教程或功能介绍。在Android开发中,用户引导通常用于向新用户介绍应用程序的关键功能,以提高用户体验。 首先,我们来...

    界面显示在pagecontrol.rar

    - UIPageControl是苹果iOS SDK中的一个控件,它提供了一组小圆点,用于指示当前显示的页面以及总的页面数量。每个小圆点代表一个页面,当前页面的小圆点会高亮显示。 - 使用UIPageControl时,通常配合UIScrollView...

    ViewPager 的多个使用场景的Demo 欢迎页 循环 tab内嵌套

    **页面指示器(Page Indicator)**:为了给用户提供当前位置的视觉反馈,开发者常常会在ViewPager下方添加一个页面指示器,如小圆点或数字,`TabLayout`本身就可以作为简单的页面指示器,也可以自定义指示器控件。...

    ios scrollview 分页

    3. UIPageControl:这是一个小圆点组成的控件,通常位于ScrollView底部,用来指示当前页面和总页面数。当ScrollView滚动时,可以通过代理方法更新PageControl的当前页面。 四、实现步骤 4. 创建ScrollView:首先,...

    仿appstore首页跳转效果.zip

    这是一个简单的控件,显示为一系列小圆点,代表可滚动的内容页数。 8. **Gestures and Interactions**: 响应用户的轻扫、捏合等手势,可以增强交互体验。例如,添加UISwipeGestureRecognizer可以让用户通过左右滑动...

    广告vierPager

    3. **页面指示器(Page Indicator)**:为了让用户知道当前显示的是哪个页面,可以添加一个页面指示器,如`CircleIndicator`,它可以显示小圆点,当前页面对应的圆点会被高亮。 4. **轮播功能**:要实现自动轮播,...

    Swift编写的iOS版视图页面

    6. **Page Control**:为了提供视觉反馈,ISViewPager可能还包含一个UIPageControl,它是一排小圆点,代表可滑动的页面数量,当前页面则突出显示。 7. **性能优化**:由于可能包含多个视图控制器,ISViewPager需要...

    Flutter实现可循环轮播图效果

    1. Stack:作为根布局,Stack允许我们在一个层叠的结构中放置多个子Widget,可以覆盖或堆叠在彼此之上。 2. PageView:类似于Android中的ViewPager,PageView用于创建一个可以滑动的页面容器,用户可以左右滑动浏览...

Global site tag (gtag.js) - Google Analytics