android / views-widgets-samples

Multiple samples showing the best practices in views-widgets on Android.
Apache License 2.0
5.07k stars 3.01k forks source link

Can I add a solid line, like show path works in MotionLayout? #224

Open muhammad-hamza-shahid opened 3 years ago

muhammad-hamza-shahid commented 3 years ago

I want to show a transition line on which my view is moving I have given this tag app:motionDebug="SHOW_PATH" but I want to show a solid line instead of line with dashes with keyframes.

jafu888 commented 3 years ago

That is meant as a debugging feature and should not be used in product. You can get the paths from the MotionController if you implement a MotionHelper

public class MotionEffect extends MotionHelper {

....
 @Override
    public void onPreSetup(MotionLayout motionLayout, HashMap<View, MotionController> controllerMap) {
muhammad-hamza-shahid commented 3 years ago

@jafu888 Thank's for your response, Can you please elaborate your solution or if possible can you give me any link to specific documentation as I have searched a lot but didn't found anything useful.

jafu888 commented 3 years ago

This is not documented. You are the first person looking to do something like this.

The idea is you would create subclass motionHelper (say PathDraw) add it to the MotionLayout (Like it was a view) but match parent width and height. Now anything you draw (in code) there would show.

Research Creating a CustomView for tips on drawing.

All the code for MotionEffect, MotionHelper, and MotionLayout can be found here: https://github.com/androidx/constraintlayout

muhammad-hamza-shahid commented 3 years ago

@jafu888 this is not the ideal solution because it need a lot of calculation of x,y coordinates and it may not work perfectly on different screen sizes.