HendrixString / sfly-quest

sfly-quest

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Canvas control Points in Android

hi there, in this assignment, you will design a custom layout component for Android which we will call Pit from now on.

general description of Pit:

  • Pit is a ViewGroup that renders an interactive horizontal 2D graph of points, between every point there is a connected edge (linear edge).
  • every point of Pit is draggable.
  • Pit also draws the Origin axis lines
  • when a point is dragged, the view is rendered again in order to show the edges, that means Pit is responsive :)
  • Pit also has a very unique feature, the reordering feature which goes like this: if a user drags a point before or after another point, then Pit will change that point order and therefore the edges will still render beautifully.
  • Pit should have an interface to add point/s. every point is added at the origin axis (0, 0)

restrictions of Pit:

  • ⚠️ you cannot use the built in Android drag functionality (i.e View.startDrag() etc..), you will have to write your own drag logic with the help of your own custom OnTouchListener.
  • ⚠️ each point should be extended from a View class itself, but you can also implement it otherwise (which will be harder, but might be more efficient). your call.

Pit should be inside a very humble activity

  • the activity should have a pit layout inside and a button to add a point into pit. every new point that is added by this button should be added at the origin axis (0, 0) coordinate.
  • Pit should start with 5 different initial points.

illustration of Pit

Things we love to see

❤️ docs and comments for each new method.
❤️ we love optimal code and memory optimizations.
❤️ we love to see a programmer gainining deep insights about what he is programming.
❤️ that means we love great practices
❤️ but also feel free to be creative when you feel the time is right.
❤️ we love communication. don't hesitate to ask questions and boldly asking questions about your assignment.
❤️ coolness and attitude, don't feel bad if you don't hit your goals, we will still consider your efforts 🥈

How to submit Pit?

confidently open a github account if you don't have one, create a repository, push all of your code into the repository and notify us when you are done. :octocat:

Who wrote this thing ?

me, Tomer Shalev, feel free to open issues or to bash me if you don't like this assignment ✍️

About

sfly-quest