package com.zzw.drawable; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; public class Circle extends View { private int posfirst = 0; // 圆球的数量 private int count = 0; // 用这个构造方法,用其他会报错 public Circle(Context context, AttributeSet attrs) { super(context, attrs); } // 根据情况设置圆球数量 public void setCount(int a) { count = a; } public void choose(int pos) { posfirst = pos; // 执行这个方法 会重新绘图 this.invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); // 去掉图形的锯齿,使得圆球更圆滑 p.setAntiAlias(true); // 获取屏幕X Y坐标 float w = getWidth(); float h = getHeight(); // 圆球的间距(针对各种机型屏幕适配) int juli = (int) (w / 7); // 设置圆球的半径(针对各种机型屏幕适配) float radius = w / 50; for (int i = 0; i < count; i++) { if (i == posfirst) { p.setColor(Color.RED); // 画一个红色圆形 canvas.drawCircle((w - (count - 1) * juli) / 2 + juli * i, (float) (h * 0.9), radius + w / 142, p); } else { p.setColor(Color.GRAY); // 画一个灰色圆形 canvas.drawCircle((w - (count - 1) * juli) / 2 + juli * i, (float) (h * 0.9), radius, p); } } } }
使用的时候:
<?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:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zzw.imagedaohang.WelcomeActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <com.zzw.drawable.Circle android:id="@+id/circle" android:layout_width="match_parent" android:layout_height="match_parent"> </com.zzw.drawable.Circle> </RelativeLayout>