android抽奖动画,Android_Android简单实现圆盘抽奖界面,闲来无事,做了一个简单的抽 - phpStudy...

Android简单实现圆盘抽奖界面

闲来无事,做了一个简单的抽奖转盘的ui实现,供大家参考

package com.microchange.lucky;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.RectF;

import android.util.AttributeSet;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

public class HalfCircle extends View {

private Paint paint;

private RectF oval;

private float startAngle;

private float sweepSpeed;

private float sweepAngle;

boolean useCenter;

int count;// 等份

@Override

protected void onDraw(Canvas canvas) {

setSweepAngle(count);

while (startAngle <= 360) {

if (startAngle % (count*3) == 0) {

paint.setColor(Color.BLUE);

} else if (startAngle % (count*2) == 0){

paint.setColor(Color.GREEN);

}else {

paint.setColor(Color.RED);

}

Log.e(""+startAngle, paint.getColor()+"");

canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint);

startAngle += count;

}

float centerX = oval.centerX();

float centerY = oval.centerY();

paint.setColor(Color.WHITE);

// paint.setStrokeWidth(5);

// paint.setStyle(Paint.Style.STROKE); //设置空心

paint.setAntiAlias(true); //消除锯齿

canvas.drawCircle(centerX, centerY, 50, paint);

String text = "奖";

paint.setTextSize(20 * getContext().getResources().getDisplayMetrics().density);

float measureText = paint.measureText(text);

float textY = paint.descent() - paint.ascent();

paint.setColor(Color.RED);

// canvas.drawLine(0, centerY, 480, centerY, paint);

// canvas.drawText(text, centerX-(measureText/2), centerY, paint);

canvas.drawText(text, centerX-(measureText/2), centerY+(textY/4), paint);

}

private void init() {

paint = new Paint();

paint.setColor(Color.BLUE);

paint.setAntiAlias(true);

paint.setStrokeWidth(5);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

return super.onTouchEvent(event);

}

/**

* @return the count

*/

public int getCount() {

return count;

}

/**

* @param count the count to set

*/

public void setCount(int count) {

this.count = 360 / count;

}

public Paint getPaint() {

return paint;

}

public void setPaint(Paint paint) {

this.paint = paint;

}

public RectF getOval() {

return oval;

}

public void setOval(RectF oval) {

this.oval = oval;

}

public float getStartAngle() {

return startAngle;

}

public void setStartAngle(float startAngle) {

this.startAngle = startAngle;

}

public float getSweepSpeed() {

return sweepSpeed;

}

public void setSweepSpeed(float sweepSpeed) {

this.sweepSpeed = sweepSpeed;

}

public float getSweepAngle() {

return sweepAngle;

}

public void setSweepAngle(float sweepAngle) {

this.sweepAngle = sweepAngle;

}

public boolean isUseCenter() {

return useCenter;

}

public void setUseCenter(boolean useCenter) {

this.useCenter = useCenter;

}

public HalfCircle(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init();

}

public HalfCircle(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public HalfCircle(Context context) {

this(context, null, 0);

}

}

package com.microchange.lucky;

import android.app.Activity;

import android.graphics.RectF;

import android.os.Bundle;

import android.view.animation.AccelerateInterpolator;

import android.view.animation.Animation;

import android.view.animation.DecelerateInterpolator;

import android.view.animation.Interpolator;

import android.view.animation.RotateAnimation;

public class MainActivity extends Activity {

RectF rect;

int radius = 300;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

HalfCircle circle = new HalfCircle(getApplicationContext());

circle.setOval(getRectF());

// circle.setStartAngle(90);

circle.setUseCenter(true);

circle.setCount(9);

Animation animation = new RotateAnimation(0, 135*10, getRectF().centerX(), getRectF().centerY());

animation.setDuration(5000);

animation.setInterpolator(new DecelerateInterpolator());

// animation.setRepeatCount(-1);

circle.setAnimation(animation );

// animation.start();

setContentView(circle);

}

public RectF getRectF(){

if (rect==null){

// getWindow().getDecorView().getWidth()

int width = getResources().getDisplayMetrics().widthPixels;

int height = getResources().getDisplayMetrics().heightPixels;

int top = (height - radius)/2;

int left = (width - radius)/2;

rect = new RectF(left, top, left+radius, top+radius);

}

return rect;

}

}

希望本文所述对大家学习Android程序设计有所帮助。相关阅读:

Java+Spring+MySql环境中安装和配置MyBatis的教程

Win10设置滑动关机用鼠标滑动就能关机

苹果OSX上怎么移除Safari 标签页的浏览记录图标?

Java BigDecimal类的使用和注意事项

使用Java对数据库进行基本的查询和更新操作

详解Bootstrap按钮

jquery单选框radio绑定click事件实现方法

Adapter实现ListView带多选框等状态的自定义控件的注意事项

Mac开机声音怎么关闭?苹果电脑关闭/开启开机声音的设置方法

Objective-C编程中语句和变量的一些编写规范建议

JavaScript设计模式之单例模式实例

ASP.NET利用MD.DLL转EXCEL具体实现

js获取客户端操作系统类型的方法【测试可用】

Android自定义照相机详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值