抽奖大转盘

1.布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.bw.ymy.demo6.Custor
        android:id="@+id/cuuuuuuuuu"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

    <com.bw.ymy.demo6.Custorbegin
        android:id="@+id/begin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="250dp"
        android:layout_marginLeft="280dp"/>


</RelativeLayout>

2.主页面

package com.bw.ymy.demo6;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.RotateAnimation;

public class MainActivity extends AppCompatActivity {
   private Custor cuuuu;
   private  Custorbegin begin;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


       cuuuu= findViewById(R.id.cuuuuuuuuu);
       begin=findViewById(R.id.begin);
        begin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //随机旋转
                float degrees =  (float)(720 + Math.random() * 1000);

                    //旋转
                RotateAnimation rotateAnimation = new RotateAnimation(0, degrees, 400, 400);
                rotateAnimation.setDuration(5000);
                rotateAnimation.setFillAfter(true);

                //加入动画
                cuuuu.setAnimation(rotateAnimation);
                //开始动画
                cuuuu.startAnimation(rotateAnimation);


            }
        });
    }
}

3.外面的大圆盘

package com.bw.ymy.demo6;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;

public class Custor extends View {
    Paint mpaint;
    int degress=0;
    int text=15;
    RectF  rectF;
    public Custor(Context context) {
        super(context);
    }

    public Custor(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        mpaint=new Paint();
        mpaint.setStrokeWidth(10);
        mpaint.setStyle(Paint.Style.FILL);
        rectF=new RectF();
        rectF.right=700;
        rectF.left=100;
        rectF.bottom=700;
        rectF.top=100;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //
        String[] strings=new String[]{"一","二","三","四","五","六"};
        int[] colors=new int[]{Color.RED,Color.YELLOW,Color.GRAY,Color.GREEN,Color.BLUE,Color.WHITE};
        for (int i=0;i<6;i++)
        {
            mpaint.setColor(colors[i]);
            Path path=new Path();
            mpaint.setTextSize(20);
            canvas.drawArc(rectF,degress,60,true,mpaint);
            path.addArc(rectF,text,60);
            mpaint.setColor(Color.BLACK);
            canvas.drawTextOnPath(strings[i],path,60,60,mpaint);
            degress+=60;
            text+=60;
        }
    }
}

4.里面的小圆盘

package com.bw.ymy.demo6;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Build;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.view.View;

public class Custorbegin extends View {
    //画笔
    Paint paint;

    public Custorbegin(Context context) {
        super(context);

    }

    public Custorbegin(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        init();
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(120,150);
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //颜色
        paint.setColor(Color.BLACK);
        canvas.drawArc(0,-150,120,120,60,60,true,paint);

            paint.setColor(Color.RED);
        canvas.drawCircle(60,90,50,paint);
        paint.setColor(Color.GREEN);
        canvas.drawText("开始",30,100,paint);

    }

    private void init() {
        paint=new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.FILL);
        paint.setStrokeWidth(10);
        paint.setTextSize(30);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42902175/article/details/84643849