package Ġcc . f em to . kom mon . ui . widget Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View . Measure Spec . EX ACT LY Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcc . f em to . kom mon . R Ċ Ċ open Ġclass ĠAs pect Ratio Frame Layout Ġ: ĠFrame Layout Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġwidth Ratio : ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġheight Ratio : ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . AspectRatio Frame Layout ) ĊĠĠĠĠĠĠĠ Ġwidth Ratio Ġ= Ġa . getInteger ( R . style able . AspectRatio ImageView _ width Ratio , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġheight Ratio Ġ= Ġa . getInteger ( R . style able . AspectRatio ImageView _ height Ratio , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Measure Spec Ġ= Ġwidth Measure Spec ĊĠĠĠĠĠĠĠ Ġvar Ġheight Measure Spec Ġ= Ġheight Measure Spec ĊĠĠĠĠĠĠĠ Ġval Ġwidth Mode Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Size Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġheight Mode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) ĊĠĠĠĠĠĠĠ Ġvar Ġheight Size Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( width Mode Ġ== ĠEX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( height Mode Ġ!= ĠEX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Size Ġ= Ġ( width Size Ġ* Ġ 1 f Ġ/ Ġwidth Ratio Ġ* Ġheight Ratio ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( height Mode Ġ== ĠEX ACT LY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Size Ġ= Ġ( height Size Ġ* Ġ 1 f Ġ/ Ġheight Ratio Ġ* Ġwidth Ratio ). toInt () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Either Ġwidth Ġor Ġheight Ġmust Ġbe ĠEX ACT LY .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwidth Measure Spec Ġ= ĠMeasure Spec . make Measure Spec ( width Size , ĠEX ACT LY ) ĊĠĠĠĠĠĠĠ Ġheight Measure Spec Ġ= ĠMeasure Spec . make Measure Spec ( height Size , ĠEX ACT LY ) ĊĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Ratio ( width Ratio : ĠInt , Ġheight Ratio : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . width Ratio Ġ= Ġwidth Ratio ĊĠĠĠĠĠĠĠ Ġthis . height Ratio Ġ= Ġheight Ratio ĊĠĠĠ Ġ} Ċ } Ċ