Chasing a modest 130 for victory, England cruised home with 17 balls to spare with Buttler unbeaten on 68 off 55 balls and Jonny Bairstow unbeaten on 13.
Roy departed for 36 off 22 balls thanks to a stunning catch by Danushka Gunathilaka, who dived to his left to pluck the ball out of thin air, off the bowling of Dushmantha Chameera in the 10th over but England were in complete control by that stage.
Dawid Malan was bowled by Isuru Udana for seven but Buttler, in the company of Bairstow – who slog-swept a massive six into the stands off Akila Dananjaya to level the scores – guided the hosts home in style.
5⃣0⃣ for @josbuttler! 👏Scorecard/clips: https://t.co/fNJnBg7MLk#ENGvSL @IGCom https://t.co/UvDcsjf83z
— England Cricket (@englandcricket) 1624479148000
Earlier, a weakened Sri Lanka missing some regular players due to injuries, rode on a battling 50 off 44 balls by Dasun Shanaka lower down the order to post 129-7 after skipper Kusal Perera won the toss and opted to bat.
Perera (30) and Gunathilaka (19) made the only other noteworthy contributions as Sam Curran (2-25) and Adil Rashid (2-17) did most of the damage for the hosts in a disciplined bowling performance on a two-paced pitch.
The second T20 will take place at the same venue on Thursday before the final match in Southampton on Saturday. The teams then face each other in three one-day internationals starting on June 29.