Gray was born in Lewisham, in south London. He began his association with Arsenal as a nine-year-old, and made one substitute for the first team before making a switch across London in July 2000 to join Crystal Palace for a £500,000 fee. He is an attacking left winger who can also play as an auxiliary striker, and has learnt full-back duties so he can help out in defence. Gray played a key part in helping them achieve promotion in the 2003–04 season, despite missing the play-off final through suspension. In addition to his successes during that season he spent a two-month spell on loan with Cardiff City. One of Gray's most memorable games for Palace was when he scored in a man-of-the-match performance as Palace surprisingly knocked Liverpool out of the 2002–03 FA Cup at Anfield. Gray's contract expired in June 2004, allowing him to sign for Birmingham City on a free transfer. He made 32 Premier League appearances in his first season in the Midlands, and remained a key part of manager Steve Bruce's plans during the 2005–06 season, although an ankle injury kept him out for several weeks towards the end of the campaign, but started only twice as the team returned to the Premier League in 2007 and was released at the end of that season. He joined Coventry City on 10 July 2007. He signed for Fulham on a season-long loan on 1 September 2008, and despite not playing a single league game for the club, the move was made permanent for an undisclosed fee on 2 February 2009. He made only one substitute appearance for Fulham, and was released at the end of the season. In July 2009 Gray went on Sheffield United's pre-season tour of Malta as part of a trial with the club, and the following month he had a trial with former club Cardiff City. Gray signed for Barnsley on 15 September, initially on a monthly contract. He was released after two months, during which he made seven appearances in all competitions and started only one Championship game. Gray joined Walsall in February 2010, and was offered a new deal by the club at the end of the season. He scored his first goal of the 2010–11 season in the 2–1 victory over Brentford with a volley from a Darren Byfield cross. After leaving Walsall when his contract expired, Gray spent two seasons in Cyprus with Nea Salamis Famagusta. He returned to England in 2013, and trained with Walsall before signing a contract with them on 27 September, to run until January of the following year. Gray made his second debut for the club on 12 October, as a 71st-minute substitute for James Baxendale in a 1–1 draw away at Colchester United. He was released when his contract expired.