自定義View——幸運轉盤
1,第一步 建立一個Class 繼承View
public class zhuanpan extends View implements View.OnClickListener {
private Paint mPaint;
private int mWidth;
private Context mcontext;
private String[] contents = new String[]{“iPhoneX”, “送購物券”, “送家電”, “馬爾地夫三日遊”, “演唱會門票”, “寫真照”,“30G流量”,“騰訊會員”};
public int[] colors = new int[]{Color.parseColor("#8EE5EE"), Color.parseColor("#FFD700"), Color.parseColor("#FFD39B"), Color.parseColor("#FF8247"), Color.parseColor("#FF34B3"), Color.parseColor("#F0E68C"),Color.parseColor("#FFD39B"), Color.parseColor("#FF8247")};
private int start;
private boolean first = true;
public zhuanpan(Context context, AttributeSet attrs) { super(context, attrs); mPaint=new Paint(); mcontext=context; setOnClickListener(this); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //設定線條顏色 mPaint.setColor(Color.BLUE); //設定字型大小 mPaint.setTextSize(30); //設定空心 mPaint.setStyle(Paint.Style.STROKE); //設定局齒輪 mPaint.setAntiAlias(true); //設定空心線條的粗細 mPaint.setStrokeWidth(4); //設定圓 canvas.drawCircle(mWidth/2,mWidth/2,300,mPaint); //畫扇形 RectF rectF=new RectF(0,0,mWidth,mWidth); //設定實心 mPaint.setStyle(Paint.Style.FILL); //填充顏色 for(int i=0;i<colors.length;i++) { mPaint.setColor(colors[i]); int jd=i*45; canvas.drawArc(rectF,jd,45,true,mPaint); } mPaint.setColor(Color.BLACK); mPaint.setTextSize(35); for(int i=0;i<contents.length;i++) { int jd=i*45; Path path=new Path(); path.addArc(rectF,jd,45); canvas.drawTextOnPath(contents[i],path,60,60,mPaint); } /* canvas.drawLine(0,200,300,mWidth/2,mPaint);*/ } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(600,600); mWidth=getMeasuredWidth(); } @Override public void onClick(View v) { Random random = new Random(); int i = random.nextInt(3600); int j = random.nextInt(6666); RotateAnimation rotate = null; if (first){ rotate=new RotateAnimation(0,i,mWidth/2,mWidth/2); start = i; first = false; }else { rotate=new RotateAnimation(start,i,mWidth/2,mWidth/2); int i1 = i % 360; start = i1; } //保留最後的位置 不回到原位 rotate.setFillAfter(true); rotate.setDuration(j); rotate.setRepeatMode(0); rotate.setInterpolator(new LinearInterpolator()); startAnimation(rotate); }
}
2,第二步 在activity_main.xml中引入
<com.example.zhuanpan.zhuanpan
android:id="@+id/zp"
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:layout_centerInParent=“true”/>
可以在activity_main.xml這裡自己新增一個指標圖片
效果圖