[4] Gray joined the youth system at League Two club Shrewsbury Town in 2004, signing his first professional one-year contract prior to the start of the 2009–10 season.
[5] Awarded the number 20 shirt, he made his debut on the opening day of the season, coming on as an 89th-minute substitute for Nathan Elder in a 3–1 win over Burton Albion.
[6] An injury crisis saw Gray make four further cameos,[7] with what would be his final appearance for the club coming as a 57th-minute replacement for Kris Bright in a 2–0 Football League Trophy second round defeat to Accrington Stanley on 20 October.
[8] He spent periods of the 2009–10 season away on loan, but competition for places meant that Gray was relegated to the reserve team substitutes' bench.
[22] Gray remained with Hinckley for the 2011–12 season and showed fine form, with his goalscoring exploits firing the Knitters to an FA Cup first round proper match versus Conference Premier club Tamworth on 12 November 2011.
[31] Gray scored the opening goal in the play-off semi-final first leg at home to Wrexham,[32] which Luton won 3–2 on aggregate to set up a final against York City at Wembley Stadium.
[36][37] Beginning the 2012–13 season in a substitute role, Gray scored his first goal of the campaign in a 4–1 win over Macclesfield Town on 1 September 2012 as he broke back into the starting lineup.
[40] Luton were drawn against Gray's hometown club Wolverhampton Wanderers in the third round and he played 89 minutes of the 1–0 giant killing on 5 January 2013.
[45] Gray was primarily used as an impact substitute during the beginning of the 2013–14 season, with new signing Mark Cullen preferred in a starting role by new Luton manager John Still.
[50] In total, Gray scored 30 goals in 45 appearances during the 2013–14 season,[44] and won the first silverware of his career, as Luton were promoted back to the Football League as Conference Premier champions.
[58] After scoring in friendlies versus Barnet and Nice in July 2014,[59][60] Gray made his competitive debut for the club on the opening day of the 2014–15 season against Charlton Athletic, making the first Football League start of his career.
[61] Gray scored his first competitive goal for the club in the following match, a 6–6 draw with Dagenham & Redbridge in the League Cup first round, which Brentford won 4–2 in a penalty shoot-out.
[63] After a long goalless run,[64] Gray regained form in November, scoring five goals in four of five successive wins and receiving the Championship Player of the Month award.
[64] A sparse goal return in the early months of 2015 saw manager Mark Warburton drop Gray to the bench in favour of Chris Long for the visit of Huddersfield Town to Griffin Park on 3 March.
[46] He quickly regained his starting berth and finished the regular season with four goals in his last 10 appearances,[46][64] helping Brentford to fifth position and a matchup with Middlesbrough in the play-off semi-finals.
[64] Amidst three transfer bids from Hull City,[68] Gray's two goals in his first two appearances of the 2015–16 season prompted Brentford to offer him a new, improved contract, but he left the club on 21 August 2015.
[70] On 21 August 2015, Gray joined Championship club Burnley on a three-year contract for an undisclosed fee – believed to be a club-record £6 million deal – double the previous record jointly held by George Boyd and Steven Fletcher.
[74] He followed up his debut by scoring his first goal for the club in second half stoppage time to complete a 3–1 home win over Sheffield Wednesday two weeks later.
[76] A further seven goals in nine matches from late December to early February, including a hat-trick in a 4–0 win over Bristol City increased his goalscoring tally to 15, as Burnley chased the automatic promotion positions in the Championship table.
[86] He made his debut for Watford three days later as a 63rd-minute substitute for Stefano Okaka in a 3–3 home draw with Liverpool[87] and scored his first goal on 23 September in a 2–1 victory away to Swansea City.
[93] On 3 July 2022, Gray moved abroad for the first time in his career, signing a four-year contract with Super League Greece club Aris.
[101] Gray's goalscoring record for Luton in the final months of the 2011–12 season raised the attention of the England C team and he was named in the squad for an International Challenge Trophy match against Russia U23 in June 2012.
[108] Gray played in a friendly against Jordan U23 at the King Abdullah II Stadium in Amman on 4 March 2014, starting in a 1–0 victory and was replaced by Dan Fitchett at half-time.
[109] Gray's return to the Football League in June 2014 meant that he was no longer eligible for England C. He made six appearances and scored two goals for the team.
[116] He spoke in May 2015 of having started to grow out of the gang lifestyle around the time of the incident and credited his mother, close friends and Luton Town for turning his life around.