カスタムView-ラッキーホイール
4035 ワード
Android Studioで提供されているコントロールが機能のニーズを満たすことができない場合がありますが、ラッキーなホイールの機能を作る必要があります.この場合、Androidの知識点であるカスタムViewを使用する必要があります.
コードを書く前にこの考えを整理しましょう
1.データ2を定義する.円を描く円弧を描き、色の区別4を設定します.各弧度にデータを上5に置く.ポインタが選択する位置6を設定する.アニメーション-回転アニメーションを使用して、カスタムViewを回転します.乱数の定義は、1回の移動回数を表します.
これは私のレイアウトです.
ここはカスタムビューのコードです
public class View_DLP extends View implements View.OnClickListener{private String[]contents=new String[]{「美女」「女神」「ホットダンス」「豊満」「セクシー」「知性」};public int[] colors = new int[]{Color.parseColor("#8EE5EE"), Color.parseColor("#FFD700"), Color.parseColor("#FFD39B"), Color.parseColor("#FF8247"), Color.parseColor("#FF34B3"), Color.parseColor("#F0E68C")}; public String centerText = “start”; private int mWidth; private Paint mPaint; private Context mContext; private RotateAnimation rotateAnimation; private float newdul;
}
まだ理解していない場合は、コードアドレスを参照してください.https://github.com/qq1341738311/zdyView_TheLuckyRoller
コードを書く前にこの考えを整理しましょう
1.データ2を定義する.円を描く円弧を描き、色の区別4を設定します.各弧度にデータを上5に置く.ポインタが選択する位置6を設定する.アニメーション-回転アニメーションを使用して、カスタムViewを回転します.乱数の定義は、1回の移動回数を表します.
これは私のレイアウトです.
ここはカスタムビューのコードです
public class View_DLP extends View implements View.OnClickListener{private String[]contents=new String[]{「美女」「女神」「ホットダンス」「豊満」「セクシー」「知性」};public int[] colors = new int[]{Color.parseColor("#8EE5EE"), Color.parseColor("#FFD700"), Color.parseColor("#FFD39B"), Color.parseColor("#FF8247"), Color.parseColor("#FF34B3"), Color.parseColor("#F0E68C")}; public String centerText = “start”; private int mWidth; private Paint mPaint; private Context mContext; private RotateAnimation rotateAnimation; private float newdul;
public View_DLP(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
mPaint = new Paint();
setOnClickListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//
mPaint.setColor(Color.YELLOW);
//
canvas.drawCircle(mWidth / 2, mWidth / 2, mWidth / 2, 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]);
// 60
int startjd = i * 60;
canvas.drawArc(rectF, startjd, 60, true, mPaint);
}
//
mPaint.setColor(Color.RED);
mPaint.setTextSize(25);
//
for (int i = 0; i < contents.length; i++) {
int startjd = i * 60;
Path path = new Path();
// rectF ,startjd , 60
path.addArc(rectF,startjd,60);
//
canvas.drawTextOnPath(contents[i],path,50,50,mPaint);
}
mPaint.setColor(Color.GREEN);
canvas.drawCircle(mWidth / 2,mWidth / 2, 50,mPaint);
mPaint.setColor(Color.BLACK);
mPaint.setTextSize(24);
Rect rect = new Rect();
mPaint.getTextBounds(centerText, 0, centerText.length(), rect);
int textWidth = rect.width();
int textHeight = rect.height();
canvas.drawText(centerText, mWidth / 2 - textWidth / 2, mWidth / 2 + textHeight / 2, mPaint);
}
//
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(300, 300);
// getMeasuredWidth()
mWidth = getMeasuredWidth();
}
@Override
public void onClick(View view) {
//Random
Random random = new Random();
//nextInt 0-1000
float dul = random.nextInt(1000);
//
//rotateAnimation = new RotateAnimation(newdul, dul, mWidth / 2,mWidth / 2);
rotateAnimation = new RotateAnimation(newdul, dul+1000, mWidth / 2, mWidth / 2);
rotateAnimation.setFillAfter(true);
rotateAnimation.setDuration(3000);
startAnimation(rotateAnimation);
//
newdul = dul % 360 +1000;
}
}
まだ理解していない場合は、コードアドレスを参照してください.https://github.com/qq1341738311/zdyView_TheLuckyRoller