2019/2/8 null
גࣜձࣾϊϋφɹށ༏೭.%$ͷ#VUUPOͷ$PSOFS'BNJMZ
View Slide
ށ༏೭ˏ[email protected]גࣜձࣾϊϋφΞϓϦΤϯδχΞɺϦαʔνɺࢪࡦɺσβΠϯ
.BUFSJBM%FTJHO$PNQPOFOUT
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="0dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="4dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="18dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="30dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="60dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="70dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="80dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius="90dp"
#VUUPO• app:shapeAppearance= "@style/ShapeAppearanceOverlay.Cut"• app:cornerRadius=“100dp"
෦࣮
ొਓ• MaterialShapeDrawable• Buttonͷഎܠɺ͍͕ͭ͜ݪҼ• ShapeAppearanceModel• ݟͨΛ࢘ΔϚϯɺ֯ลͷShapePathΛ࡞Δ• ShapePath• ͲΜͳݟ͔ͨͷΫϥε• ShapeAppearancePathProvider• ShapeAppearanceModelΛPathʹม͢ΔϚϯ
എܠͷඳըMaterialShapeDrawable.drawMaterialShapeDrawable.drawFillShape→ MaterialShapeDrawable.drawShape→ Canvas.drawRoundRect/Canvas.drawPathCutdrawPath
എܠͷ1BUIͷ࡞MaterialShapeDrawable.drawMaterialShapeDrawable.calculatePath→ MSD.calculatePathForSize→ ShapeAppearancePathProvider.calculatePath→ ShapeAppearancePathProvider.calculatePath
4IBQF"QQFBSBODF1BUI1SPWJEFSDBMDVMBUF1BUI• setCornerPathAndTransform / setEdgePathAndTransform → ShapePathΛ࡞• appendCornerPath /appendEdgePath → ShapePathΛPathʹม ɹ→ ShapePath.applyToPath ɹɹ→ PathOperation.applyToPath
DPSOFS3BEJVTlEQ
DPSOFS3BEJVTEQ
$PSOFS'BNJMZ306/%&%
$PSOFS'BNJMZ306/%&%• app:cornerRadius="100dp"
എܠͷඳըMaterialShapeDrawable.drawMaterialShapeDrawable.drawFillShape→ MaterialShapeDrawable.drawShape→ Canvas.drawRoundRect/Canvas.drawPath
·ͱΊw $VUͰϦϘϯܕʹͳΔͷҙਤ͍ͯ͠Δ͔ w ˠڪΒ͘ҙਤ͍ͯ͠ͳ͍w എܠͷඳըw 3PVOEFEˠ3PVOE3FDUw $VUˠ1BUIΛඳըw 1BUIͷมφΠʔϒ