android 画日出日落圆弧曲线
来源:互联网 发布:淘宝卖家优惠券链接 编辑:程序博客网 时间:2024/04/29 04:16
private PointF mPointF1;
private PointF mControl;
private PointF touchPoint;
private float startAngle = 180;
private float sweepAngle = 60;
private float radius = 100;
private float LEFT = 100;
private float TOP = LEFT + radius;
private float RIGHT = 300;
private float BOTTOM = 400;
private RectF mRectF;
private void init() {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.BLACK);
mPath = new Path();
mPointF1 = new PointF(LEFT, RIGHT);
touchPoint = new PointF(0,0);
mControl = new PointF(0,0);
mRectF = new RectF(LEFT,TOP,RIGHT,BOTTOM);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
touchPoint.x = event.getX();
touchPoint.y = event.getY();
float d = BOTTOM - radius - touchPoint.y;
float l = touchPoint.x - LEFT - radius;
Log.e("jyg","onTouchEvent,d="+d);
Log.e("jyg","onTouchEvent,l="+l);
float angle = (float)Math.toDegrees(Math.atan (d/l));
Log.e("jyg","onTouchEvent,angle="+angle);
if(angle < 0){
sweepAngle = Math.abs(angle);
} else if(angle < 180){
sweepAngle = 180 - angle;
}
Log.e("jyg","onTouchEvent,touchPoint="+touchPoint);
Log.e("jyg","onTouchEvent,sweepAngle="+sweepAngle);
invalidate();
break;
}
return true;
}
private Paint mPaint;
private Path mPath;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPath.reset();
draw1(canvas);
}
private void draw1(Canvas canvas) {
mPath.moveTo(mPointF1.x, mPointF1.y);
mPath.arcTo(mRectF,startAngle,sweepAngle);
float xx,yy;
xx = LEFT+radius - (float)(Math.cos(Math.toRadians(sweepAngle)) * radius);
yy = BOTTOM - radius - (float) Math.sin(Math.toRadians(sweepAngle)) * radius;
Log.e("jyg","xx="+xx);
Log.e("jyg","yy="+yy);
mControl.x = xx;
mControl.y = yy;
mPath.moveTo(mControl.x, mControl.y);
mPath.lineTo(mControl.x,BOTTOM-radius);
mPath.lineTo(mPointF1.x,mPointF1.y);
canvas.drawPath(mPath, mPaint);
}
private PointF mControl;
private PointF touchPoint;
private float startAngle = 180;
private float sweepAngle = 60;
private float radius = 100;
private float LEFT = 100;
private float TOP = LEFT + radius;
private float RIGHT = 300;
private float BOTTOM = 400;
private RectF mRectF;
private void init() {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.BLACK);
mPath = new Path();
mPointF1 = new PointF(LEFT, RIGHT);
touchPoint = new PointF(0,0);
mControl = new PointF(0,0);
mRectF = new RectF(LEFT,TOP,RIGHT,BOTTOM);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
touchPoint.x = event.getX();
touchPoint.y = event.getY();
float d = BOTTOM - radius - touchPoint.y;
float l = touchPoint.x - LEFT - radius;
Log.e("jyg","onTouchEvent,d="+d);
Log.e("jyg","onTouchEvent,l="+l);
float angle = (float)Math.toDegrees(Math.atan (d/l));
Log.e("jyg","onTouchEvent,angle="+angle);
if(angle < 0){
sweepAngle = Math.abs(angle);
} else if(angle < 180){
sweepAngle = 180 - angle;
}
Log.e("jyg","onTouchEvent,touchPoint="+touchPoint);
Log.e("jyg","onTouchEvent,sweepAngle="+sweepAngle);
invalidate();
break;
}
return true;
}
private Paint mPaint;
private Path mPath;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPath.reset();
draw1(canvas);
}
private void draw1(Canvas canvas) {
mPath.moveTo(mPointF1.x, mPointF1.y);
mPath.arcTo(mRectF,startAngle,sweepAngle);
float xx,yy;
xx = LEFT+radius - (float)(Math.cos(Math.toRadians(sweepAngle)) * radius);
yy = BOTTOM - radius - (float) Math.sin(Math.toRadians(sweepAngle)) * radius;
Log.e("jyg","xx="+xx);
Log.e("jyg","yy="+yy);
mControl.x = xx;
mControl.y = yy;
mPath.moveTo(mControl.x, mControl.y);
mPath.lineTo(mControl.x,BOTTOM-radius);
mPath.lineTo(mPointF1.x,mPointF1.y);
canvas.drawPath(mPath, mPaint);
}
阅读全文
0 0
- android 画日出日落圆弧曲线
- 自定义日出日落曲线动画
- 日落日出
- 日出日落时间计算器
- 日落日出动画效果
- 仿天气日出日落效果
- 天气预报 获取日出日落的代码
- 计算日落日出时间算法与代码
- 计算日落日出时间算法与代码
- 仿MIUI日出日落动画实现
- 计算日落日出时间算法与代码
- 健身时间 日出后日落前宜做活动
- 地平线上,看这日出日落、潮起潮落
- unity 24小时日出日落光照效果参考
- 自定义View之实现日出日落太阳动效
- android canvas 画闹钟 圆弧
- Android canvas.drawArc() 画圆弧
- 日落
- nowcoder xinjun与阴阳师
- 2017年浙江工业大学大学生程序设计迎新赛预赛-E:小咪买东西(思维)
- mysql中文全文索引
- TESEC标准与CC标准
- Docker笔记三:基于LVS DR模式构建WEB服务集群
- android 画日出日落圆弧曲线
- SSH框架需要导入的依赖
- mysql命令行下中文显示为乱码问题
- HashMap源码解析
- 大数据开发基础面试题
- 更改nginx默认端口,ubuntu更改nginx端口号
- Java 并发工具包 java.util.concurrent 用户指南
- 查看cuda和cudnn版本的命令
- js将图片转为base64编码 && js将base64编码图片转为Blob格式