Forget about Garmin or any other dedicated GPS units, their displays suck and the unser interface is straight out of the 80s. On Android at least there are two apps worthy of consideration
Gaia GPS – many people think it is the best option, I personally disagree
Backcountry Navigator XE – IMO it is far, far better than Gaia
Both have their own downloadable vector maps that take up very little space, you can download all of the western US in under 2-3 Gb. They are not very good for real route finding. However, both offer the option to download CalTopo tiles in your ROI, and both will allow you to upload GPS/kml/kmz tracks that you have created elsewhere. Both will allow you to record tracks, add waypoints, comments, stats, etc.
Caltopo, which of course is hands down THE best desktop option for what you are requesting also has an app that allows you to download their maps. It has ways to go to get on par with the functionality of Gaia and BCNAV XE, but if you want GOOD slope angle shading it is the only game in town. Gaia and BCNAV XE have some layers that attempt to do slope angle shading but they are nowhere near as good as Caltopo.
If you decide to go for BCNAV make sure to get the XE option, not the PRO. The XE is a subscription service nowadays, but it is already better than PRO in many ways and will continue to be supported.
Finally, Garmin has their own Earthmate app, which I find lacking. The upside is that it pairs with some of their GPS units, but that is the only good thing I can say about it.