绘制一个简单的实现接口盘
接口 实现 一个 简单 绘制
2023-09-11 14:21:01 时间
闲来无事,做一个简单的抽奖转盘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; } }
版权声明:本文博客原创文章,博客,未经同意,不得转载(联系信息:QQ312037487 邮箱:andywuchuanlong@sina.cn)。
相关文章
- Django使用TestCase测试接口
- java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)
- DevOps on DevCloud|如何实现应用接口的混合驱动测试
- ASP.NET Core WebApi基于Redis实现Token接口安全认证
- python 接口加密
- Spring的BeanFactoryPostProcessor接口
- [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口
- [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口
- Android实训案例(七)——四大组件之一Service初步了解,实现通话录音功能,抽调接口
- Java动态代理代码案例:使用cglib实现对无接口的类进行动态代理
- Atitit 提升扩展性 自由化理念 参数 第一章 前瞻性设计 第二章 自由化理念 自由化参数 json map等半结构化参数,dsl等全功能参数 自由化功能接口 dsl 自由化返回
- NLP之Chatgpt:基于openai框架通过调用API接口实现Chatgpt的吊炸天功能的图文教程(基于python代码实现)、案例应用之详细攻略
- CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别
- 保证接口/数据安全
- Flask搭建二进制音频传送接口
- 先收藏!关于Java类、接口、枚举的知识点大汇总
- springboot中service层注入的是实现类,但Controller层接收的是接口
- RecyclerView实现一个页面有多种item,每个item有多个view,并且可以让任意item的任意view自定义监听,通过接口方法进行触发操作
- java中接口的定义与实现
- 软件测试(功能、接口、性能、自动化)详解 | 测试人生路
- python接口测试之mock(二)
- 一文3000字完善接口自动化测试框架,实现企业微信测试报告
- 基于 python 的接口自动化测试
- 0代码实现接口自动化测试-RF框架实践
- 【每天学习亿点点系列】接口测试基础 —— Jmeter安装和配置
- 利用redis-lua+python实现接口限流
- Node.js学习笔记——接口
- FPGA实现cameralink接口图像传输