views-widgets-samples icon indicating copy to clipboard operation
views-widgets-samples copied to clipboard

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

Open muhammad-hamza-shahid opened this issue 3 years ago • 4 comments

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.

muhammad-hamza-shahid avatar Aug 27 '21 12:08 muhammad-hamza-shahid

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) {
    

jafu888 avatar Aug 27 '21 17:08 jafu888

@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.

muhammad-hamza-shahid avatar Aug 27 '21 17:08 muhammad-hamza-shahid

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

jafu888 avatar Aug 27 '21 20:08 jafu888

@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.

muhammad-hamza-shahid avatar Aug 28 '21 18:08 muhammad-hamza-shahid