Slide 1

Slide 1 text

גࣜձࣾϊϋφɹ੉ށ༏೭ .%$ͷ#PUUPN"QQ#BSͷ 4IBEPXͷ࣮ݱํ๏

Slide 2

Slide 2 text

੉ށ༏೭ˏTFUP@IJ גࣜձࣾϊϋφ ΞϓϦΤϯδχΞɺ ϦαʔνɺࢪࡦɺσβΠϯ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

.BUFSJBM%FTJHO$PNQPOFOUT

Slide 5

Slide 5 text

#PUUPN"QQ#BS

Slide 6

Slide 6 text

04͕4IBEPXΛඳը͢Δ৚݅ w "OESPJEˢ w &MFWBUJPO͕ΑΓେ͖͍ w 7JFXͷ0VUMJOF͕௕ํܗ • Outline.MODE_ROUND_RECT w ·ͨ͸ತਤܗ • Outline.MODE_CONVEX_PATH

Slide 7

Slide 7 text

#PUUPN"QQ#BS

Slide 8

Slide 8 text

Ͳ͏΍ͬͯ ࣮ݱ͞Ε͍ͯΔͷ

Slide 9

Slide 9 text

#PUUPN"QQ#BS࣮૷ EdgeTreatment topEdgeTreatment = new BottomAppBarTopEdgeTreatment(…); ShapeAppearanceModel appBarModel = materialShapeDrawable.getShapeAppearanceModel(); appBarModel.setTopEdge(topEdgeTreatment); materialShapeDrawable.setShadowCompatibilityMode( SHADOW_COMPAT_MODE_ALWAYS); … ViewCompat. setBackground(this, materialShapeDrawable);

Slide 10

Slide 10 text

#PUUPN"QQ#BS5PQ&EHF5SFBUNFOU @Override public void getEdgePath(…) { … shapePath.lineTo(…) shapePath.addArc(…) shapePath.addArc(…) shapePath.addArc(…) shapePath.lineTo(…) … }

Slide 11

Slide 11 text

BEE"SD BEE"SD BEE-JOF BEE-JOF #PUUPN"QQ#BS BEE"SD

Slide 12

Slide 12 text

.BUFSJBM4IBQF%SBXBCMFESBX MaterialShapeDrawable.drawCompatShadow → EdgeShadowOperation.draw → ShadowCompatOperation.draw → ShadowRenderer.drawCornerShadow / ShadowRenderer.drawEdgeShadow canvas.drawBitmap(shadowLayer, …)

Slide 13

Slide 13 text

4IBEPX3FOEFSFSESBX$PSOFS4IBEPX … cornerShadowPaint.setShader( new RadialGradient( …, Shader.TileMode.CLAMP)); … canvas.drawArc( …, cornerShadowPaint); …

Slide 14

Slide 14 text

4IBEPX3FOEFSFS ΂ΜΓ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

·ͱΊ w #PUUPN"QQ#BS͸.BUFSJBM4IBQF%SBXBCMFΛ࢖͏ w .BUFSJBM4IBQF%SBXBCMFͷ5PQ&EHF͕ #PUUPN"QQ#BS5PQ&EHF5SFBUNFOU w #PUUPN"QQ#BS5PQ&EHF5SFBUNFOU͸
 BSDͰ͘΅ΈΛදݱ͍ͯ͠Δ w Өͷඳը͸4IBEPX3FOEFSFS

Slide 17

Slide 17 text

No content