zoukankan      html  css  js  c++  java
  • 转盘旋转兼拖动

    package com.example.administrator.jlj20180412demo.newview;

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

    import java.util.Timer;
    import java.util.TimerTask;

    /**
    * Created by Administrator on 2018/4/12.
    */

    public class MyView extends View{

    private Paint paint;
    private int[] col;
    private int w;
    private int h;
    private RectF rectF;
    private float firstX;
    float z = -400;
    float s = -400;
    float y = 400;
    float x = 400;



    public MyView(Context context) {
    this(context, null);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
    this(context, attrs, 0);
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    //实例化一个画笔
    paint = new Paint();
    //给画笔上颜色
    paint.setColor(Color.RED);
    /**
    * 可以弄个色盘,使用for循环给画笔上颜色
    */
    col = new int[]{Color.LTGRAY, Color.BLUE, Color.RED, Color.GREEN, Color.MAGENTA, Color.WHITE};

    //矩形
    rectF = new RectF(z, s, y, x);
    }

    /**
    * 取到宽高,点一个自定义view的中心点
    *
    * @param widthMeasureSpec
    * @param heightMeasureSpec
    */

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = getMeasuredWidth();
    int height = getMeasuredHeight();
    w = width / 2;
    h = height / 2;
    }

    /**
    * 搞起来,画
    *
    * @param canvas
    */
    int d = 60;

    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.translate(w, h);//把当前画布的原点移到 位置变换
    canvas.rotate(d);//旋转角度,用于控制角度位置
    drawCircleWithColor(canvas);//用色彩画圆
    }

    int starteangle = 0;

    private void drawCircleWithColor(Canvas canvas) {
    for (int i = 0; i < col.length; i++) {
    paint.setColor(col[i]);
    canvas.drawArc(rectF, starteangle, 360 / col.length, true, paint);
    starteangle += 360 / col.length;
    }
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN://按下
    float lastX;
    firstX = lastX = event.getX();
    break;
    case MotionEvent.ACTION_MOVE://移动
    w = (int) event.getX();
    h = (int) event.getY();
    invalidate();
    break;
    case MotionEvent.ACTION_UP:// 抬起
    lastX = event.getX();
    if (lastX - firstX == 0) {
    Timer timer = new Timer();
    TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
    d += 1;
    postInvalidate();
    }
    };
    timer.schedule(timerTask, 0, 1);
    } else {
    //发生了拖拽
    }
    break;
    }
    return true;
    }

    }
  • 相关阅读:
    Java 工程转 C#
    初涉Linux ----------> 打造自己的 Vim IDE
    初涉Linux ----------> Ubuntu15.04的安装与美化
    没学过CSS等前端的我,也想美化一下自己的博客
    作为程序员之 Vim(一)
    win7升win10,初体验
    作为程序员之正则表达式
    数据库系统原理
    Mysql数据库笔记
    我的个人常用快捷键
  • 原文地址:https://www.cnblogs.com/Nigeria/p/8846496.html
Copyright © 2011-2022 走看看