Faits :
A.
Par décision du 24 janvier 2019, l'Office de l'assurance-invalidité du canton de Fribourg (ci-après: l'office AI) a rejeté la demande de prestations déposée en octobre 2015 par A._.
B.
Statuant le 4 mars 2020 sur le recours formé par A._ contre cette décision, le Tribunal cantonal du canton de Fribourg, Ie Cour des assurances sociales, l'a partiellement admis. Il a réformé la décision attaquée en ce sens que l'assuré a droit à un quart de rente d'invalidité dès le 1er avril 2016.
C.
A._ interjette un recours en matière de droit public contre ce jugement dont il demande la réforme, en ce sens qu'un droit à une demi-rente de l'assurance-invalidité lui est reconnu à compter du 1er avril 2016.
L'office AI conclut au rejet du recours en se référant au jugement cantonal, tandis que l'Office fédéral des assurances sociales a renoncé à se déterminer.

Considérant en droit :
1.
Le recours en matière de droit public peut être interjeté pour violation du droit, tel qu'il est délimité par les art. 95 et 96 LTF. Le Tribunal fédéral applique le droit d'office (<ref-law>). Il statue par ailleurs sur la base des faits établis par l'autorité précédente (<ref-law>), sauf s'ils ont été établis de façon manifestement inexacte ou en violation du droit au sens de l'<ref-law> (<ref-law>). Le recourant qui entend s'en écarter doit expliquer de manière circonstanciée en quoi les conditions de l'<ref-law> sont réalisées sinon un état de fait divergent ne peut pas être pris en considération.
2.
2.1. Le litige porte sur l'étendue du droit du recourant à une rente d'invalidité dès le 1 er avril 2016. Compte tenu des motifs et conclusions du recours, est seul litigieux le point de savoir si le calcul auquel les premiers juges ont procédé pour arrêter le revenu sans invalidité de l'assuré à 109'102 fr. 80 est entaché d'une erreur relevant d'une inexactitude au sens de l'<ref-law>.
2.2. On rappellera que selon la jurisprudence, le revenu sans invalidité doit être évalué de la manière la plus concrète possible, avec pour conséquence qu'il se déduit en principe du salaire réalisé en dernier lieu par la personne assurée avant l'atteinte à la santé, en tenant compte de l'évolution des salaires jusqu'au moment de la naissance du droit à la rente (cf. <ref-ruling> consid. 2.2 p. 593; <ref-ruling> consid. 4.3.1 p. 224 et les références).
3.
Considérant que le revenu sans invalidité du recourant devait être déterminé en se fondant sur le revenu qu'il avait perçu dans l'activité d'enseignant qu'il avait exercée en dernier lieu jusqu'en 2015, la juridiction cantonale s'est référée à une attestation de la Direction de l'instruction publique du canton de Berne établie à l'attention de la Caisse publique de chômage du canton de Fribourg le 12 octobre 2015. Selon ce document, le revenu mensuel brut de l'assuré, 13e salaire compris, s'élevait à 3433 fr. 75 pour un taux d'occupation de 35,106 %. Admettant que ce montant de 3433 fr. 75 équivalait à 9028 fr. 70 pour un taux d'occupation à 100 %, les premiers juges ont fixé le revenu sans invalidité du recourant à 109'102 fr. 80 (soit: 12 x 9028 fr. 70 = 108'344 fr. 40, puis indexation de 1,007 pour tenir compte de l'évolution des salaires nominaux).
4.
4.1. Comme le soutient à juste titre le recourant, les premiers juges ont commis une erreur de calcul en arrêtant son revenu sans invalidité à 109'102 fr. 80. Cette erreur résulte du fait que la juridiction cantonale, tout en indiquant qu'il convenait de procéder au calcul en se fondant sur le montant de 3433 fr. 75, correspondant au revenu mensuel brut de l'assuré, 13e salaire inclus, pour un taux d'occupation de 35,106 %, a converti ce montant en équivalent plein temps de manière erronée. Pour un taux d'occupation de 100 %, le revenu mensuel de 3'433 fr. 75 perçu par l'assuré correspond à 9781 fr. 10 (soit: [3433 fr. 75 / 35,106] x 100). Le revenu sans invalidité doit dès lors être corrigé et s'élève à 118'194 fr. 80 (soit: [12 x 9781 fr. 10 = 117'373 fr. 20] x 1,007 pour tenir compte de l'évolution des salaires nominaux).
4.2. Compte tenu du revenu d'invalide (58'756 fr.) retenu par la juridiction cantonale - non contesté par les parties - et du revenu sans invalidité (118'194 fr. 80) nouvellement déterminé, le taux d'invalidité du recourant s'élève à 50 %. Ce taux ouvre le droit à une demi-rente de l'assurance-invalidité à partir de la date arrêtée par les premiers juges au 1er avril 2016, qui n'est pas remise en cause par les parties. Le recours est par conséquent bien fondé.
5.
Vu l'issue du litige, les frais de justice seront supportés par l'intimé qui succombe (<ref-law>), auquel il appartient également d'allouer une indemnité de dépens au recourant (art. 68 al. 1 et 2 LTF).
L'admission du recours dans le sens de l'augmentation du droit du recourant à une rente d'invalidité ne justifie pas de modifier la répartition des frais et dépens en procédure cantonale au regard de l'issue de la procédure de première instance (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis. Le ch. I. du dispositif de la décision du Tribunal cantonal du canton de Fribourg, I e Cour des assurances sociales, du 4 mars 2020 est réformé en ce sens que le recourant a droit à une demi-rente d'invalidité dès le 1 er avril 2016.
2.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge de l'intimé.
3.
L'intimé versera au recourant la somme de 2800 fr. à titre de dépens pour la procédure devant le Tribunal fédéral.
4.
Le présent arrêt est communiqué aux parties, au Tribunal cantonal du canton de Fribourg, Ie Cour des assurances sociales, et à l'Office fédéral des assurances sociales.
Lucerne, le 8 juillet 2020
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
Le Juge présidant : Meyer
La Greffière : Perrenoud