Lucroy gets a $3.35 million salary under the deal announced Saturday and can earn $600,000 for starts at catcher and $575,000 for plate appearances.
He would get $50,000 for 100 starts at catcher, $75,000 each for 105 and each additional five though 130 and $100,000 for 135. He also would get $50,000 each for 350 and 375 plate appearances, $75,000 apiece for 400 and each additional 25 through 500, and $100,000 for 525.
A two-time All-Star, the 32-year-old Lucroy batted .241 with four homers, 51 RBIs and a .617 OPS in 126 games last year during his only season with the Oakland Athletics. Though he struggled at the plate, he received praise for his management of the A's pitching staff.
Lucroy is taking a cut from is $6.5 million salary last year.
Before signing Lucroy, the Angels did not have an accomplished major league catcher on their 40-man roster. Jose Briceno made his debut last season, and the team claimed Kevan Smith off waivers from the Chicago White Sox two months ago.
The Angels will be Lucroy's fifth team in four seasons. He played his first 5½ seasons with Milwaukee, making All-Star teams in 2014 and 2016.
Lucroy, a .277 career hitter, finished fourth in NL MVP voting in 2014.