Advertisement
kanzeparov

Sixth_Intersect_CanvasView

Nov 18th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.00 KB | None | 0 0
  1. class CanvasView extends View implements ICanvasView{
  2.     Paint paint;
  3.     MainCircle mainCircle;
  4.     static int width;
  5.     static int height;
  6.     Canvas canvas;
  7.     static int MAX_CIRCLES = 10;
  8.     ArrayList<EnemyCircle> circles;
  9.  
  10.     CanvasView(Context context, @Nullable AttributeSet attrs) {
  11.         super(context, attrs);
  12.         initWidthAndHeight(context);
  13.         initMainCircle();
  14.         initEnemyCircles();
  15.         initPaint();
  16.     }
  17.  
  18.    void initEnemyCircles() {
  19.        SimpleCircle mainCircleArea = mainCircle.getCircleArea();
  20.        circles = new ArrayList<EnemyCircle>();
  21.        for (int i = 0; i < MAX_CIRCLES; i++) {
  22.            EnemyCircle circle;
  23.            do {
  24.                circle = EnemyCircle.getRandomCircle();
  25.            } while (circle.isIntersect(mainCircleArea)); //до тех пор пока не будет пересекаться
  26.            circles.add(circle);
  27.        }
  28.        calculateAndSetCirclesColor();
  29.    }
  30.  
  31.  
  32.     void initMainCircle() {
  33.         mainCircle = new MainCircle(width/2, height/2);
  34.     }
  35.  
  36.     void initPaint() {
  37.         paint = new Paint(); // Создание кисточки
  38.         paint.setAntiAlias(true);//сглаживание
  39.         paint.setStyle(Paint.Style.FILL); //Заполнение кружка цветом
  40.     }
  41.  
  42.     void initWidthAndHeight(Context context) {
  43.                 WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
  44.                 Display display = windowManager.getDefaultDisplay();
  45.                 Point point = new Point();
  46.                 display.getSize(point);
  47.                 width = point.x;
  48.                 height = point.y;
  49.             }
  50.  
  51.  
  52.     @Override
  53.     protected void onDraw(Canvas canvasFromMethod) {
  54.         super.onDraw(canvasFromMethod);
  55.         canvas = canvasFromMethod;
  56.         drawCircle(mainCircle);
  57.         for (EnemyCircle circle : circles) {
  58.             drawCircle(circle);
  59.         }
  60.  
  61.     }
  62.     private void calculateAndSetCirclesColor() {
  63.                 for (EnemyCircle circle : circles) {
  64.                     Log.d("mylog", circle.getColor() + "bef");
  65.                         circle.setEnemyOrFoodColorDependsOn(mainCircle);
  66.                     Log.d("mylog", circle.getColor() + "after");
  67.                     }
  68.     }
  69.  
  70.  
  71.  
  72.     @Override
  73.      public boolean onTouchEvent(MotionEvent event) {
  74.                 int x = (int) event.getX();
  75.                 int y = (int) event.getY();
  76.                 if (event.getAction() == MotionEvent.ACTION_MOVE) {
  77.                     mainCircle.moveMainCircleWhenTouchAt(x, y);
  78.                     }
  79.                 invalidate();//ОБНОВЛЕНИЕ
  80.                 return true;
  81.             }
  82.     //Для того, чтобы в этот метод подавать и другие круги
  83.     @Override
  84.     public void drawCircle(SimpleCircle circle) {
  85.         paint.setColor(circle.getColor());
  86.         canvas.drawCircle(circle.getX(), circle.getY(), circle.getRadius(), paint);
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement