ããã«ã¡ã¯ãHabrïŒ ç¬åŠããã°ã©ãåãã®å®éšçãªèšäºã·ãªãŒãºãç¶ç¶ããŸããMicrosoftDeveloperã³ãã¥ããã£ã®ã¡ã³ããŒã®1人ã§ãã
Alexei PlotnikovãUWPã§ã®ã²ãŒã ã®äœæã«ã€ããŠèªã£ãŠããŸãã ä»æ¥ã¯ãæ¡åŒµã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã«ã€ããŠã話ããŸãã ã³ã¡ã³ããæ®ãããšãå¿ããªãã§ãã ãããããªãã¯éçºããã»ã¹ã«åœ±é¿ãäžããããšãã§ããŸãã
èè
ã«çºèšæš©ãäžããŸãã客芳çã«èšãã°ãæ¡åŒµã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã®ãããã¯ã¯ããã®ãµã€ã¯ã«ã®çµããè¿ãã«ãããšèããã¹ãã§ãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã®æãéèŠãªéšåã§ããã ãã§ãªããååãšããŠå¿
é ã§ã¯ãããŸããã ãã ãããµã€ã¯ã«ã¯ãããžã§ã¯ãã®éçºãšäžŠè¡ããŠèšè¿°ããããããèšäºã®èšè¿°é åºã«è¥å¹²ã®èª¿æŽãå°å
¥ãããŸãã æ¡åŒµãããã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ãçšæãããŠããããµã€ã¯ã«äžã«åœŒã«éãããç¶æ³ãããã®ã§ãæåã«åœŒã«ã€ããŠè©±ãããšã«ããŸããã
ç§ãã¡ã¯å°ããªããšããå§ããŸã-ã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ãšã¯äœã§ããïŒãªããããæ¡åŒµããå¿
èŠãããã®ã§ããïŒ UWPãç»å Žãããã£ãšåãããã¢ããªã±ãŒã·ã§ã³ã®ã¹ã¯ãªãŒã³ã»ãŒããŒã«åºäŒã£ãããšã¯ç¢ºãã§ãã é ããŸã§è¡ããªã Visual Studioãèµ·åãããšãé©åãªãã£ãã·ã§ã³ãä»ããé·æ¹åœ¢ã®ç»åãå
¥åããŸãã

åããã°ã©ã ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãåæåããŠããŒãããã®ã«å°ãæéãå¿
èŠã§ããããããã®æç¹ã§ãŠãŒã¶ãŒã¯äœããèµ·ãã£ãŠããããšãç解ããã¹ãã©ãã·ã¥ç»é¢ã衚瀺ãããŸãã èµ·åããã»ã¹ãããè€éã§æéããããããã°ã©ã ã§ã¯ãé«åºŠãªã¹ãã©ãã·ã¥ç»é¢ã䜿çšãããŸãã ãããã«ã€ããŠã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããŠã³ããŒãã¹ããŒã¿ã¹ã瀺ãããã¹ããŸãã¯ã¹ããŒã¿ã¹ããŒããã衚瀺ãããŸãã
ããã§ã¯ãUWPã§ã®åäœãèŠãŠã¿ãŸãããã äž»ãªéãã¯ãã©ãããã©ãŒã ã®æ©èœã§ãã æ®éçã§ãããããããã§ã¯ããŠã£ã³ããŠãã®æŠå¿µã¯åªå
äºé
ã§ã¯ãªãããã¹ã¯ãªãŒã³ãã®æŠå¿µãåé¢ã«åºãŠããŸãã ç»é¢ã衚瀺ãããã³ã³ããã¯ããã€ã¹ã«äŸåãããŠã£ã³ããŠã¯PCã®ã¿ã«ãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®èµ·åæã«ãŠãŒã¶ãŒã«æåã«è¡šç€ºãããã®ã¯ãPNGç»åãšèæ¯ã®å¡ãã§æ§æãããã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã§ãã ã¢ããªã±ãŒã·ã§ã³ãäœæããã°ããã§äœãå€æŽããªãã£ãå Žåãã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã¯ã·ã¹ãã ã®ã¡ã€ã³ã«ã©ãŒã§ãã€ã³ããããäžå€®ã«ã¯ã¢ããªã±ãŒã·ã§ã³ã§èªåçã«äœæãããåºæ¬çãªãã¹ã¿ããç»åããããŸãã ããã©ã«ãã§ã¯ããã®ç»åã¯ãAssetsããã©ã«ããŒã«ããããSplashScreen.pngããšåŒã°ããŸãã ãŸãããã¡ã€ã«åã«ã¯ãscale-200ããªã©ãå«ãŸããå ŽåããããŸãã ããã¯ã¹ã±ãŒãªã³ã°ã·ã¹ãã ã®äžéšã§ãããã·ãªãŒãºã®ããããã®èšäºã§åå¥ã«èª¬æããŸãããããã§ã¯äžè¬çãªçšèªã§ã®ã¿èª¬æããŸãã

ã¢ããªã±ãŒã·ã§ã³ã¯ããŸããŸãªããã€ã¹ã§å®è¡ã§ãããããããŸããŸãªãµã€ãºã®ç»åã®è€æ°ã®ããŒãžã§ã³ãäœæããŠãããŸããŸãªç»é¢è§£å床ã§äŒžåŒµãŸãã¯å§çž®ã«ãã£ãŠå質ã倱ãããªãããã«ããããšãã§ããŸãã ãããžã§ã¯ãå
ã®ç»åã®æšæºåã¯ãååãšæ¡åŒµåã®2ã€ã®éšåã§æ§æãããŠããŸãã ãã®ãããªç»åã¯ã100ïŒ
ã®ã¹ã±ãŒã«ã®ç»åãšããŠèªèãããŸãã ååãšæ¡åŒµåã®éã«ã.scale-xxxãïŒxxxã¯ã¹ã±ãŒãªã³ã°ä¿æ°ïŒãè¿œå ãããšããã®ã¹ã±ãŒã«ã®ç»é¢ã§ã¯ããã©ã«ãã§èæ
®ãããæ®ãã®éšåã§äŒžçž®ããŸãïŒã¹ã±ãŒã«ã®ããŒãžã§ã³ããªãå ŽåïŒã ããšãã°ãã¹ã±ãŒã«ã200ïŒ
ã®å Žåãã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã®ã€ã¡ãŒãžåã¯ãSplashScreen.scale-200.pngãã«ãªããŸãã ããã«æ¬æã§ã¯ãå°æ¥ã®èšäºã§äºå®ãããŠããããŒããè€è£œããªãããã«ã100ïŒ
ã®ã¹ã±ãŒã«ã®ç»åã®ã¿ãæ€èšããŸãã
ããã§ãç»åã®ãµã€ãºã«ã€ããŠçŽæ¥èª¬æããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®åºæ¬çãªèŠèŠçãªãœãŒã¹ã«ã¯ãåã¹ã±ãŒã«ã®ãµã€ãºãåºå®ãããŠããŸãã æšæºã¹ã±ãŒã«ã®ã¹ãã©ãã·ã¥ç»é¢ã®ç»åã¯ã620x300ãã¯ã»ã«ã®ãµã€ãºã«ããå¿
èŠããããŸãã å¥ã®ãµã€ãºã䜿çšããããšãããšããšã©ãŒã«é¢ããèŠåã衚瀺ãããŸãããäžèšã®ã¹ã¯ãªãŒã³ã·ã§ãããèŠããšãæããã«ç°ãªããµã€ãºã®æ£æ¹åœ¢ã®ç»åãèŠãããšãã§ããŸãã å®éã620x300ãã¯ã»ã«ã®ãµã€ãºãããããã®ã»ãšãã©ãéæã§ããããã¯çŠæ¢ãããŠããªãã ãã§ãªããå€ãã®ã·ããªãªã§æšå¥šãããŠããŸãã
ã¹ãã©ãã·ã¥ç»é¢ã®èæ¯è²ã«ã¯ãããã©ã«ãã®ã·ã¹ãã è²ããŸãã¯ã¢ããªã±ãŒã·ã§ã³ãããã§ã¹ãã§æå®ããè²ã䜿çšãããŸãã

èæ¯ã®è²ã®èšå®ãšç¬èªã®ç»åã®éžæã¯ããã¹ã¯ãªãŒã³ã»ãŒããŒããµãã»ã¯ã·ã§ã³ã®ãããžã¥ã¢ã«ãªãœãŒã¹ãã¿ãã®ãããã§ã¹ããšãã£ã¿ãŒãŠã£ã³ããŠã§å®è¡ãããŸãã åã®èšäºã§è¿°ã¹ãããã«ããªããžã§ã¯ããã©ãŠã¶ãŒã§
Package.appxmanifestãã¡ã€ã«ãããã«ã¯ãªãã¯ãããšããããã§ã¹ããšãã£ã¿ãŒãéãããšãã§ããŸãã ãã®ãšãã£ã¿ãŒã¯UWPãã©ãããã©ãŒã ãšäžç·ã«éçºãããŠãããVSã®ææ°ããŒãžã§ã³ã§ã¯ãç°ãªãã¹ã±ãŒã«ã§1ã€ã®ç»åããå¿
èŠãªãã¹ãŠã®ããªãšãŒã·ã§ã³ããã°ããäœæã§ããããŒã«ããããŸããããã®ããŒã«ã«ã€ããŠã¯å¥ã®èšäºã§åå¥ã«èª¬æããŸãããããã§ã¯æåã®ãã©ã¡ãŒã¿ãŒèšå®ã®ã¿ãæ€èšããŸãã
æåã®ãã£ãŒã«ããBackground screen saverãã§ã¯ã
HTML ïŒHEXïŒåœ¢åŒã§èæ¯è²ãæå®ããå¿
èŠããããŸãã ã»ãšãã©ãã¹ãŠã®ç»åãšãã£ã¿ãŒïŒPaint 3Dãå«ãïŒãŸãã¯ãªã³ã©ã€ã³ã§é©åãªåœ¢åŒã§è²ã®å€ãååŸã§ããŸãããè±æ°åã®å€ã®å
é ã«ãïŒãèšå·ãä»ããå¿
èŠããããã®è²ã®èšè¿°èŠåãå¿ããªãã§ãã ããã ããšãã°ãç§ã®ã¹ã¯ãªãŒã³ã»ãŒããŒã¯ãèæ¯ãšããŠå€ "ïŒfae57a"ã䜿çšããŸãã

2çªç®ã®ã¹ã¯ãªãŒã³ã»ãŒããŒã§ã¯ãã€ã¡ãŒãžãã¡ã€ã«ã®ã¹ãã¬ãŒãžãã©ã«ããŒãšããŒã¹åãæå®ããããæ±ããããŸãã ãSplashScreenãã®ååãå¿
é ã§ã¯ãªãããã«ããAssetsããã©ã«ããŒã¯ç»åãä¿åããããã®å¿
é ã®å Žæã§ã¯ãããŸããããå€ããããžã§ã¯ãã転éããå Žåã«ã®ã¿ããããå€æŽããå¿
èŠãçããå ŽåããããŸãã ä»ã®å Žåã§ã¯ãåºæ¬çãªå€ã䜿çšããæ¹ãã¯ããã«ç°¡åãªã®ã§ãç§ã®ãããžã§ã¯ãã§ã¯ååãšãã¹ãå€æŽããªããŸãŸã«ããŸãã ãŸããããŒã¹åãæå®ãããšãã«ãã¹ã±ãŒã«ã®è¡šç€ºãè¿œå ããå¿
èŠããªãããšã«ã泚æããŠãã ããã äžã®ãŠã£ã³ããŠã§éžæãããšãååã«ãã®ãããªãã¬ãã£ãã¯ã¹ãèªåçã«è¡šç€ºãããŸãã
å®éãäžã®ãŠã£ã³ããŠã«ã¯ãã€ã³ã¹ããŒã«ãããŠããç»åã®ãã¬ãã¥ãŒãšãåã¹ã±ãŒã«ã®éžæçšã®ãã¿ã³ãå«ãŸããŠããŸãã ãŸãããŠã£ã³ããŠã®æšªã«ã¯ãç¹å®ã®çž®å°ºã«å¯ŸããŠç»åã®ãµã€ãºã瀺ããã³ãããããŸãã ãæ³åã®ãšãããä»»æã®ååã§é©åãªãµã€ãºã®ç»åãéžæãããšãæå®ããååã§æå®ããããã©ã«ããŒã«é
眮ããã瞮尺ããŒã¿ãè¿œå ãããŸãã
èæ¯è²ãšç»åãéžæããããã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠãå€æŽã®çµæã確èªã§ããŸãã

ããã§ãæšæºã®ã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã®æºåãã§ããŸããã次ã¯ãé«åºŠãªããŒãžã§ã³ã®äœæã«é²ã¿ãŸãã åè¿°ããããã«ãããè€éãªããã°ã©ã ã§ã¯ãã¹ã¯ãªãŒã³ã»ãŒããŒã®æšæºã€ã¡ãŒãžã®ä»£ããã«ãããŠã³ããŒãã¹ããŒã¿ã¹ã®ã¹ã¯ãªãŒã³ã»ãŒããŒã衚瀺ãããŸãã æ¡åŒµãããUWPã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã¯åãæ©èœãå®è¡ããŸãããéå§æã«é·ãã¿ã¹ã¯ãããå Žåã«ã®ã¿äœ¿çšããã®ãçã«ããªã£ãŠããŸãã ç§ã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããããã®ã¿ã¹ã¯ã«ã¯ãä¿åã®ããŒããå€æŽã®åæèšç®ããããã¯ãŒã¯äžã®ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ã賌å
¥ã®ç¢ºèªãå«ãŸããŸãã ç°ãªãããã€ã¹ã§ã¯ãããããã¹ãŠã®ã¿ã¹ã¯ã«ç°ãªãæéãããããŸããçŸæç¹ã§åŒ±ãããã€ã¹ã§ã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ããã³ã°ããªãã£ãããšããŠãŒã¶ãŒãç解ããŠãããšäŸ¿å©ã§ãã
ããã¥ã¡ã³ããŒã·ã§ã³ã§ä¿®æ£ããããæ¡åŒµã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ããšããååã«ãããããããå®éã«ã¯ãããŒãã€ã³ãžã±ãŒã¿ãŒãè¿œå ããŠã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ãã·ãã¥ã¬ãŒãããèªå·±äœæããŒãžãæ±ããŸãããããã®å Žåããäžèšã§èª¿ã¹ãæšæºã¹ã¯ãªãŒã³ã®è¡šç€ºãå
è¡ããŸãã ã ãã®çµæãæ¡åŒµã¹ã¯ãªãŒã³ã»ãŒããŒã¯ã»ãšãã©ã®éšåã§æšæºãç¹°ãè¿ããæšæºã®åŸã«æãã¹ã ãŒãºã«è¡šç€ºãããã¯ãã§ãã
èšèšã®èŠ³ç¹ããèŠããšããã®æ®µéã¯éåžžã«éèŠã§ãããæ³ååã«å¿ããŠãã¢ããªã±ãŒã·ã§ã³ã®èªèã«å€§ããªåœ±é¿ãäžããéåžžã«èå³æ·±ãé
åçãªã¹ã¯ãªãŒã³ã»ãŒããŒãäœæã§ããŸãããã®ããããã®æé ãéå°è©äŸ¡ããã次ã®ãããªå¹³å¡ãªããŠã³ããŒãã€ã³ãžã±ãŒã¿ãŒã«éå®ããŠãã ããProgressRingã
å°ãèããŠããã«ã®ãã¬ãŒããå転ãããè² è·ã®çŸåšã®ç¶æ
ã衚瀺ããããã¹ãè¡ãè¿œå ããããšã«ãããè² è·è¡šç€ºãå®è£
ããããšã«ããŸããã ãããã£ãŠãèšç»ã©ãããæšæºç»é¢ã¯éãã«æ¡åŒµç»é¢ã«å€ããããã¬ãŒããå転ãå§ããããã¹ããäžã«è¡šç€ºãããŸãã ãããããã®åé¡ã®æåã®ã¹ããããèžããšãå©çšå¯èœãªè³æãåé¡ãå®å
šã«ã«ããŒããŠãããããããã®ããã€ãã¯æãæåãããã¯ã©ã³ããã§ã¯ãªã䜿çšãããŠãããšããçµè«ã«éããŸããã
以äžã§ã¯ããããã¯ãŒã¯äžã®èšäºãšå
¬åŒã¬ã€ãã«åºã¥ããŠãã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ãäœæããããã®ç¬èªã®ã¬ã·ãã説æããŸãããããã§ããããã¯ç°ãªããŸãã
ã¹ããã1.空çœã®ããŒãžãäœæãã
äžã§è¿°ã¹ãããã«ãæ¡åŒµã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã¯éåžžã®ã¢ããªã±ãŒã·ã§ã³ããŒãžã§ãããåºæ¬çãªã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã«ã§ããã ãé¡äŒŒãããã®ã«ããŸãã ãããžã§ã¯ãã«æ°ããããŒãžãè¿œå ããã«ã¯ã[ãããžã§ã¯ã]> [æ°ããã¢ã€ãã ã®è¿œå ]ã¡ãã¥ãŒã«ç§»åãã衚瀺ããããã€ã¢ãã°ã§[空çœããŒãž]ã¢ã€ãã ãéžæããŸãã å
¬åŒããã¥ã¡ã³ãã§ã¯ããã®ããŒãžã®ååãšããŠãExtendedSplashãã䜿çšããããšããå§ãããŸããä»ã®ååãèªç±ã«éžæã§ããŸãããããã«ã¯å®¢èŠ³çãªçç±ã¯ãããŸããã ææ¡ãããååã瀺ãããè¿œå ããã¯ãªãã¯ããŸãã
æ°ããäœæãããããŒãžã¯2ã€ã®ãã¡ã€ã«ã§æ§æãããŸãã1ã€ã¯
ExtendedSplash.xamlãããŒã¯ããããã®ãã®ã§ããã1ã€ã¯ã³ãŒã
ExtendedSplash.xaml.cs / vbã®ããã®ãã®ã§ãã å°ãåŸã§ãããã«æ»ããŸãããä»ã®ãšããã¯æ¬¡ã®ã¹ãããã§ãã
æé 2. ExtendedSplashãéå§ãšããŠå²ãåœãŠã
å
¬åŒã¬ã€ãã§ã¯ããã®æé ã¯æåŸã«è¡ãããŸãããäºåã«è¡ãããšã奜ã¿ãŸãã å®éã®ãšãããåœãè¿œå ããŠã·ã¹ãã ã¹ãã©ãã·ã¥ç»é¢ã®ããåŸãã«è¡šç€ºããã ãã§ã¯äžååã§ããããã
App.xaml.cs / vbãã¡ã€ã«ã§ããã€ãã®æäœãå®è¡ããå¿
èŠããããŸãã
åã®èšäºã§æãåºããããã«ãããã¯ãã®ã©ã€ããµã€ã¯ã«ãæ
åœããã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã«ã§ãã ç¹ã«ãOnLaunchedããã·ãŒãžã£ããããŸãããã®ããã·ãŒãžã£ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åæã«ããã«å®è¡ãããéå§ããŒãžãèšå®ãããŸãã
æ°ãããããžã§ã¯ãïŒVB.NETïŒãäœæããçŽåŸã®ãã®æé ã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
Protected Overrides Sub OnLaunched(e As Windows.ApplicationModel.Activation.LaunchActivatedEventArgs) Dim rootFrame As Frame = TryCast(Window.Current.Content, Frame) If rootFrame Is Nothing Then rootFrame = New Frame() AddHandler rootFrame.NavigationFailed, AddressOf OnNavigationFailed If e.PreviousExecutionState = ApplicationExecutionState.Terminated Then End If Window.Current.Content = rootFrame End If If e.PrelaunchActivated = False Then If rootFrame.Content Is Nothing Then rootFrame.Navigate(GetType(MainPage), e.Arguments) End If Window.Current.Activate() End If End Sub
ã³ãŒããæžããããã«ãã³ã¡ã³ãã¯åé€ãããŸããããã®æé ã§äœãèµ·ãã£ãŠããããå®å
šã«ç解ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ãšããã²ãŒã·ã§ã³ãããæ·±ãç解ããå¿
èŠããããŸãããããã«ã€ããŠã¯æ¬¡ã®ããããã®èšäºã§èª¬æããŸãã ãããŸã§ã®ãšããããã®ã³ãŒãããç解ããå¿
èŠãããã®ã¯ãæåã«ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ãã³ãïŒããžã¥ã¢ã«ã«ãŒãïŒãšããŠèšå®ãããFrameãªããžã§ã¯ããäœæãã次ã«ãã®ãã¬ãŒã ãã¢ããªã±ãŒã·ã§ã³ã®MainPageããŒãžã«ç§»åããããšã§ãã
ããã§ã¯ãMainPageã®ä»£ããã«ExtendedSplashãèšå®ããå¿
èŠããããšæ³å®ããã®ãè«ççã§ããéå§ããŒãžãšããŠç®çã®ããŒãžãååŸããŸããããã®å ŽåãExtendedSplashããŒãžã¯ããã²ãŒã·ã§ã³å±¥æŽã«ä¿åãããæ»ãããšãã§ããããããã®ãªãã·ã§ã³ã¯é©ããŠããŸãããããã¯å¿
èŠãããŸããã ãã®åé¡ã解決ããã«ã¯ãããã²ãŒãããã®ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã³ã³ãã³ãããã¬ãŒã ã§ã¯ãªããExtendedSplashã«çŽæ¥èšå®ããŸããããã¯ãPageãªããžã§ã¯ãã§ãããã¢ããªã±ãŒã·ã§ã³ã®èŠèŠçãªã«ãŒãã«ããªããŸãã
ã³ãŒãã次ã®ããã«ä¿®æ£ããŸãã
Protected Overrides Sub OnLaunched(e As Windows.ApplicationModel.Activation.LaunchActivatedEventArgs) Dim rootFrame As Frame = TryCast(Window.Current.Content, Frame) If rootFrame Is Nothing Then rootFrame = New Frame() AddHandler rootFrame.NavigationFailed, AddressOf OnNavigationFailed If (e.PreviousExecutionState <> ApplicationExecutionState.Running) Then Window.Current.Content = New ExtendedSplash(e.SplashScreen) End If End If If e.PrelaunchActivated = False Then If rootFrame.Content Is Nothing Then rootFrame.Navigate(GetType(MainPage), e.Arguments) End If Window.Current.Activate() End If End Sub
ãæ°ã¥ãã®ããã«ãã³ãŒããããã¯ã¯æåã®æ¡ä»¶ã§å€æŽãããŸããã ãã®ãããã¯ã®äžéšã§ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠãããã©ããã確èªããå®è¡ãããŠããªãå Žåã¯ãæ°ããExtendedSplashããŒãžãªããžã§ã¯ããã¢ããªã±ãŒã·ã§ã³ã³ã³ãã³ããšããŠå²ãåœãŠãããŸãã
ãŸãããã©ã¡ãŒã¿ãŒãšããŠãæ°ããExtendedSplashã¯ã©ã¹ã宣èšãããšãã«ãSplashScreenã¯ã©ã¹ãæå®ãããŸãã ãã®ã¯ã©ã¹ã¯ãã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³äžã®ç»åã®ãµã€ãºãšäœçœ®ã«é¢ããæ
å ±ãå«ããããæ¡åŒµã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ãäœæããéèŠãªéšåã§ããããã«ãããããŒã¹ã¹ã¯ãªãŒã³ãéãã«ç¬èªã®ãã®ã«çœ®ãæããããšãã§ããŸãã ãã®ã¯ã©ã¹ã«å¿
èŠãªããŒã¿ãå«ãŸããããã«ãOnLaunchedããã·ãŒãžã£ãã·ã¹ãã ããåãåã£ãåŒæ°ããååŸããŸãã
æåŸã®ä»äžãããããŸãã ã³ãŒããã¡ã€ã«æ¡åŒµåExtendedSplash.xaml.cs / vbã§ãSplashScreenåã®ãªããžã§ã¯ããåãå
¥ããNewã³ã³ã¹ãã©ã¯ã¿ãŒãè¿œå ããå¿
èŠããããŸãã
Public Sub New(splashscreen As SplashScreen) InitializeComponent() End Sub
ããã§ãã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšãMainPageã§ã¯ãªãExtendedSplashããŒãžã衚瀺ãããŸããããã«ãããããŒãžã¬ã€ã¢ãŠãã«å ããããå€æŽãããã«ç¢ºèªã§ããã³ãŒãããããã°ããæ¹ã䟿å©ã§ãã
ã¹ããã3.ããŒãžã¬ã€ã¢ãŠã
ExtendedSplashããŒãžã®ã¬ã€ã¢ãŠãã«ãããæåã®æãç°¡åãªå€æŽã¯ãããŒãžã®èæ¯è²ãã¡ã€ã³ã®ã¹ãã©ãã·ã¥ç»é¢ãšåãè²ã«èšå®ããããšã§ãã æ°ããäœæãããããŒãžã«ã¯ãèæ¯ããããã£ãæã€ã°ãªããã«ãŒãèŠçŽ ãæ¢ã«å«ãŸããŠããŸãã ããã©ã«ãã§ã¯ããã®ããããã£ã¯ã·ã¹ãã ãªãœãŒã¹ãèšå®ããŸããã以åã¯ã¢ããªã±ãŒã·ã§ã³ãããã§ã¹ãã§æå®ãããŠããè²ã«çœ®ãæããŸãã ååãšããŠãè²ã®å€ã¯çŽæ¥ã®Background = "ïŒfae57a"ãæãããšãã§ããŸãããã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ã«ã©ãŒã¯ç¹å¥ãªãã¡ã€ã«
ApplicationStyle.xamlã«ä¿åã
ãŸã ãããã«ã€ããŠã¯ãåã®èšäºã®æåŸã§èª¬æããŸããã èæ¯ã®ãªãœãŒã¹ã¯ãBackgroundBrushããšåŒã³ãé©åãªå Žæã§åç
§ããŸãã
ã¹ã¿ã€ã«ãªãœãŒã¹ãã¡ã€ã«ïŒ
<SolidColorBrush x:Key="BackgroundBrush" Color="#fae57a"/> ExtendedSplash.xaml: <Grid Background="{StaticResource BackgroundBrush}"âŠ
ãããŠæåŸã«ãç§ãã¡ã®æ¹æ³ãšå
¬åŒã¬ã€ããä»ã®èšäºã«èšèŒãããŠããæ¹æ³ãšã®äž»ãªéããå§ãŸãå Žæã«çããŸããã
å
¬åŒããã¥ã¡ã³ãã®èšäºãæ¢ã«åŠç¿ããŠããå Žåã¯ãCanvasèŠçŽ ã䜿çšããŠç»åãããŒãžã«é
眮ããããšãææ¡ããŠããããšã«æ°ã¥ããŸããã ç»åããµã€ãºã ãã§ãªãäœçœ®ãèšå®ã§ããããã«ããå¿
èŠããããŸãããå®éã«ã¯ããã¹ãŠãæåŸ
ã©ããã«å®å
šã«ç§»åããããã§ã¯ãããŸããã
ããã¥ã¢ã«ã®äœæè
ã¯ãã¹ãã©ãã·ã¥ç»é¢ã®ç»åã¯ç¶æ³ã«ãã£ãŠç°ãªãæ¹æ³ã§æ¡å€§çž®å°ã§ãããšããäºå®ããé²ãã§ããŸãã ãã®çç±ã¯ãããŸããŸãªããã€ã¹ã®ã¹ã±ãŒãªã³ã°ä¿æ°ãšãPCã®ãŠã£ã³ããŠã®ãµã€ãºã®äž¡æ¹ã§ããå¯èœæ§ããããŸãã ãããã®ãã¹ãŠã®ç¶æ³ã§ã®ããŒã¹ã€ã¡ãŒãžã®åäœã¯ã·ã¹ãã ã«ãã£ãŠèŠå¶ãããŠããããã®åäœãã·ãã¥ã¬ãŒãã§ããããã«ãåè¿°ã®SplashScreenã¯ã©ã¹ãæäŸãããŸãããã®ã¯ã©ã¹ã®å¯äžã®ããããã£ã¯Rectåã®ImageLocationã§ãã ãã®ããããã£ã«ã¯ãç»åã®ãµã€ãºïŒå¹
ãé«ãïŒãšäœçœ®ïŒXãYïŒã«é¢ããæ
å ±ãå«ãŸããŠããŸãããããã£ãŠãå©çšå¯èœãªããŒã¿ã«åºã¥ããŠç»åãæäœããã«ã¯ãCanvasèŠçŽ ãé©åã§ããããã®ãããªãã©ã¡ãŒã¿ãŒã«åºã¥ããŠãªããžã§ã¯ããæäœããããšãé©åã§ãã
å®éãæšå¥šãããããã«æ¡åŒµã¹ã¯ãªãŒã³ã»ãŒããŒãå®è£
ãããšããã¹ãŠãæ©èœããŸãããPCã§ã®ã¿æ©èœããŸãã é»è©±ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããšãå®å
šã«äºæž¬äžå¯èœãªå€èº«ãèµ·ããå§ããŸãã ç»åã衚瀺ãããªãããæ£ãã衚瀺ãããŸããã ç»é¢ãæ°Žå¹³äœçœ®ã§å転ããããšãç»åã¯ç»é¢ã®ç«¯ãŸã§éããéšåçã«åãåãããåçŽäœçœ®ã«æ»ã£ããšãã«ã®ã¿é©åãªå Žæã«ç§»åããŸãã
ãããã¯ãŒã¯äžã§ã®å€ãã®è°è«ãšãä¿®æ£ãæšå¥šãããŠããèšäºããå€æãããšãåæ§ã®åé¡ã«ééããã®ã¯ç§ã ãã§ã¯ãªããšçµè«ä»ããããšãã§ããŸãã ç§ãèŠã€ããæã人æ°ã®ãããœãªã¥ãŒã·ã§ã³ã¯ãããã€ã¹ããšã«ç°ãªãããŒã¯ã¢ããã䜿çšããããšããå§ãããŸãã PCçšã®ãã£ã³ãã¹ãšã¢ãã€ã«çšã®ã°ãªããã ãã®æ±ºå®ãå®å
šã«ç¹°ãè¿ããŠãã³ã³ããŒãã¡ã³ãã«å®è¡å¯èœãªã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã衚瀺ãããéå°ãªæŸèæã䜿çšããŠãããšåŒ·ãæããŸããã
æçµçã«ãåºæ¬ç»é¢ã§æ£ç¢ºã«äœãèµ·ãã£ãŠããã®ãããããã©ã®çšåºŠã·ãã¥ã¬ãŒãããå¿
èŠãããã®ãââãåå¥ã«ææ¡ããããšã«ããŸããã ããŸããŸãªããã€ã¹ãšãšãã¥ã¬ãŒã¿ãŒã§ã®äžé£ã®å®éšã®çµæãã€ã¡ãŒãžã®äœçœ®ã«é¢ããæ
å ±ãå®å
šã«æŸæ£ã§ããããšã«æ°ä»ããŸããã ãŠã£ã³ããŠã®ãµã€ãºãããã€ã¹ã®ã¿ã€ãããŸãã¯ãã®åãã«é¢ä¿ãªããã¡ã€ã³ã®ã¹ãã©ãã·ã¥ç»é¢ã®ç»åã¯åžžã«ç»é¢ã®äžå€®ã«è¡šç€ºãããŸãã ãããã£ãŠãç»åã®ãµã€ãºã«é¢ããæ
å ±ã®ã¿ãæœåºã§ããåºæ¬ç»é¢ãç°¡åã«ç¹°ãè¿ãããšãã§ããŸãã
æåã®æ®µéã§ã®ç§ã®ãŠã£ã³ããŠã¬ã€ã¢ãŠãã¯æ¬¡ã®ããã«ãªããŸãã
<Grid Background="{StaticResource BackgroundBrush}"> <Image x:Name="SplashScreenImage3" Source="Assets/SplashScreens/SplashScreen3.png" Canvas.ZIndex="3" HorizontalAlignment="Center" VerticalAlignment="Center"/> <Image x:Name="SplashScreenImage2" Source="Assets/SplashScreens/SplashScreen2.png" Canvas.ZIndex="2" HorizontalAlignment="Center" VerticalAlignment="Center"/> <Image x:Name="SplashScreenImage1" Source="Assets/SplashScreens/SplashScreen1.png" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock x:Name="LoadingSatatusTextBox" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20" TextAlignment="Center" Foreground="{StaticResource ForegroundBrush}" FontWeight="Bold"/> </Grid>
åæãå§ããåã«ãåå¿è
ã®éçºè
ã«é£çµ¡ããããšæããŸãã XAMLããŒã¯ã¢ããèšèªãåããŠäœ¿çšããå Žåã¯ããŠã£ã³ããŠãã¶ã€ããŒïŒã³ã³ã¹ãã©ã¯ã¿ãŒãšãåŒã°ããïŒã§ã®äœæ¥ãã§ããéãå°ãªãããããšã匷ããå§ãããŸãã Visual Studioã®æ°ããããŒãžã§ã³ããšã«æ¹åãããŠããŸãããäŸç¶ãšããŠäžæ£ç¢ºãªããŒã«ã§ãã ããšãã°ãImageã³ã³ãããŒã«ãããŒãžã«ãã©ãã°ãããšãäžå€®ã«é
眮ããããã«èŠããå ŽåããããŸãããå®éã«ã¯ãåçŽããã³æ°Žå¹³äœçœ®ã®ããããã£ã§ã¯ãªããã€ã³ãã³ãã«åºã¥ããŠé
眮ãèšå®ã§ããŸãã ããŒã¯ã¢ããã§ã¯ã2ã€ã®ããããã£ïŒHorizoâântalAlignmentããã³VerticalAlignmentïŒãé€ããç»åã®äœçœ®ã«åœ±é¿ãäžããã€ã³ãã³ãããã®ä»ã®èŠå ãé€å€ããããšãéåžžã«éèŠã§ãã
ããããããŒã¯ã¢ããã«æ»ããŸãã ãšã©ãŒãªãã§æ©èœããããã«ã¯ãImageèŠçŽ ã®ãœãŒã¹ãšããŠäœ¿çšããããããžã§ã¯ãã«ç»åãã¡ã€ã«ãè¿œå ããå¿
èŠããããŸãã ãSplashScreensããã©ã«ããŒãAssetsãã®ãµããã©ã«ããŒã«é
眮ããŸããã ãããžã§ã¯ãã«ç»åãè¿œå ããã«ã¯ãç®çã®ãã©ã«ããŒãå³ã¯ãªãã¯ããŠãã¡ãã¥ãŒé
ç®ãè¿œå >æ¢åã®é
ç®...ããéžæããŸãã éæ¢èŠçŽ ãšç§»åèŠçŽ ãåé¢ããå¿
èŠãããããã3ã€ã®ç»åããããŸãã

æåã®ç»åãš3çªç®ã®ç»åã¯åºæ¬620x300ãã¯ã»ã«ïŒæšæºçž®å°ºïŒãšåããµã€ãºã§ããã3çªç®ã®ç»åã«ã¯ç»åå
šäœãšåãå Žæã«ã¢ã€ã³ã³ãå«ãŸããæ®ãã®éšåã¯éæã§ããããšã«æ³šæããããšãéèŠã§ãã ããã¯ãäºãã®çžå¯Ÿçãªé
眮ã«ãããåŽåãæå°éã«æããããã«è¡ãããŸãã ãã¬ãŒãã®ç»åã¯ãšããžã®äžã§ããªãã³ã°ãããäœåãªã»ã¯ã·ã§ã³ã¯ãããŸããã
3ã€ã®ç»åã¯ãã¹ãŠãããŒãžã®äžå€®ã«å³å¯ã«é
眮ãããŸãã ãã®äŸã§ã¯ãã°ãªããèŠçŽ ã®äžå¿ã§ãããããŒãžã®ã«ãŒãèŠçŽ ã§ãããã€ã³ãã³ãããªãããããã®äžå¿ã¯ããŒãžã®äžå¿ã«çãããªããŸãã 次ã«ããã¬ãŒãããã«ã®èåŸã«ãããšããç¶æ³ã«ãªããªãããã«ãéãªãåãç»åã®æ£ããé åºãèšå®ããå¿
èŠããããŸãã ãããè¡ãã«ã¯Canvas.ZIndexããããã£ã䜿çšããŸããImageèŠçŽ ãããŒã¯ã¢ããã«é
眮ãããé åºã¯é¢ä¿ãããŸãããããã®ããããã£ã®å€ã®ã¿ãéèŠã§ãã å€ãé«ãã»ã©ãèŠçŽ ã®éãªãã倧ãããªããŸãïŒZ軞ïŒã
ããŒã¯ã¢ããã®æåŸã®èŠçŽ ã¯ãããŠã³ããŒãã¹ããŒã¿ã¹ã衚瀺ããããã¹ããããã¯ã§ãã ããã¯ãæ°Žå¹³é¢ã«å¯ŸããŠäžå€®ã«ãããæ¯èŒçåçŽã®äžã«ãããŸãã ãŸããããã¹ããç»é¢ã®ç«¯ã«ããã£ã€ããªããããã«ãäžããå°ããªã€ã³ãã³ãã瀺ãããŠããŸãã ããã«2ã€ã®ããããã£ãããã¹ãã®è²ãšã¹ã¿ã€ã«ã瀺ããŸãã
ããã¹ãã®è²ã®ãªãœãŒã¹ã¯æ¬¡ã®ããã«èšå®ãããŸãã
<SolidColorBrush x:Key="ForegroundBrush" Color="#c89103"/>
ãã®æç¹ã§ãããŒãã³ã°ã䜿çšããäœæ¥ã®æåã®æ®µéã¯å®äºãããšèŠãªãããšãã§ããŸããããã¬ãŒãã®å転ã¢ãã¡ãŒã·ã§ã³ãè¿œå ãããšãã«ãã®æ®µéã«æ»ããŸãã
ã¹ããã4.ããŒãžã³ãŒã
äœæ¥ã®æãéèŠãªéšåã¯ããã¡ã€ã«
ExtendedSplash.xaml.cs / vbã«ããããŒãžã³ãŒãã§è¡ãããŸãã
æåã®ã¹ãããã¯ãWindows.UI.Coreåå空éãã€ã³ããŒãããåŸã®ã³ãŒãã§å¿
èŠã«ãªãå€æ°ãè¿œå ããããšã§ãã
Imports Windows.UI.Core Public NotInheritable Class ExtendedSplash Inherits Page Friend splashImageRect As Rect Private splash As SplashScreen Friend ScaleFactor As Double Public Sub New(splashscreen As SplashScreen) InitializeComponent() End Sub End Class : Public Sub New(splashscreen As SplashScreen) InitializeComponent() AddHandler Window.Current.SizeChanged, AddressOf ExtendedSplash_OnResize splash = splashscreen If splash IsNot Nothing Then AddHandler splash.Dismissed, AddressOf DismissedEventHandler ScaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel splashImageRect = splash.ImageLocation SetSizeImage() End If End Sub
ã³ãŒãã¯ãã«ãŒãã³ã³ãããŒã®ãµã€ãºå€æŽã€ãã³ãã«ãµãã¹ã¯ã©ã€ãããããšããå§ãŸããŸãã ããã¯ããŠã£ã³ããŠãµã€ãºãŸãã¯ããã€ã¹ã®åããå€æŽããããšãã«ç»åãµã€ãºãå€æŽããããã«å¿
èŠã«ãªããŸãã 次ã«ãåŒæ°ã§æž¡ãããSplashScreenã¯ã©ã¹ãããŒã«ã«å€æ°ã«è»¢éãããŸããããŒã«ã«å€æ°ã¯ãå¿
èŠãªç»åãµã€ãºã«é¢ããæ
å ±ãåç
§ããŸãã
空ã§ãªãã¯ãã®ããŒã«ã«ã¹ãã©ãã·ã¥å€æ°ã確èªããåŸãããã«æäœãé²ããŸãã ããã§ãã·ã¹ãã ã¹ãã©ãã·ã¥ç»é¢ãéãããšãã«çºçããDismissedã€ãã³ãã«ãµãã¹ã¯ã©ã€ãã§ããŸãã ãã®ç¹ã¯ãã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã®äžè¬çãªåçãç解ããããã«éèŠã§ãã å®éãã³ãŒããNewããã·ãŒãžã£å
ã§å®è¡ãããŠããéãããŒãžã¯ãŸã åæåäžã§è¡šç€ºã®æºåãã§ããŠããŸããããããã£ãŠãåºæ¬çãªã¹ãã©ãã·ã¥ç»é¢ã¯ã¢ããªã±ãŒã·ã§ã³ããä¿è·ãããå®è¡äžãšç®çã®ããŒãžã衚瀺ãããããšã瀺ããŸãã å€ãã®ç¹ã§ãéçãªãããã§ã¯ãªããé·æéã®åæåããã»ã¹ãã©ã€ãèŠèŠåã«äŒŽãããã«ãæ¡åŒµã¹ãã©ãã·ã¥ç»é¢ãå¿
èŠãªçç±ã§ãã
ã³ãŒãã®æ¬¡ã®è¡ã¯ããµã€ãºãæ£ãã解éããããã«çŸåšã®ã¹ã±ãŒãªã³ã°ä¿æ°ãä¿åãããµã€ãºèªäœã¯ããã«ã³ãŒãã®å€æ°splashImageRectã«æ ŒçŽãããŸãã ãããŠæåŸã«ãæåŸã®è¡ãããã·ãŒãžã£ãåŒã³åºããåä¿¡ãããã¹ãŠã®ããŒã¿ãæäœããŸãã
ãã¡ããããã®ã³ãŒããè¿œå ãããšãäžèšã®ã€ãã³ããé¢é£ä»ããããŠããããã·ãŒãžã£ããªããSetSizeImageããã·ãŒãžã£ãååšããªãããã3ã€ã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
ããããè¿œå ããŸãã
Private Sub SetSizeImage() End Sub Private Sub DismissedEventHandler(sender As SplashScreen, args As Object) End Sub Private Sub ExtendedSplash_OnResize(sender As Object, e As WindowSizeChangedEventArgs) End Sub SetSizeImage: Private Sub SetSizeImage() SplashScreenImage1.Height = splashImageRect.Height / ScaleFactor SplashScreenImage1.Width = splashImageRect.Width / ScaleFactor SplashScreenImage2.Width = splashImageRect.Width / ScaleFactor * 0.3073 SplashScreenImage2.Margin = New Thickness(-splashImageRect.Width / ScaleFactor * 0.547, -splashImageRect.Width / ScaleFactor * 0.1633, 0, 0) SplashScreenImage3.Height = splashImageRect.Height / ScaleFactor SplashScreenImage3.Width = splashImageRect.Width / ScaleFactor ScaleFactor = 1 End Sub
ãã®ã³ãŒãã¯ãããŒãžã«é
眮ãããåç»åã®ãµã€ãºãé çªã«èšå®ããŸãã 1çªç®ãš3çªç®ã®ç»åã®å Žåãç»åã®å¹
ãšé«ããSplashScreenã¯ã©ã¹ããåé€ãããã®ã«çããèšå®ããã¹ã±ãŒãªã³ã°ä¿æ°ã調æŽããã ãã§ååã§ãã ScaleFactorå€æ°ã®æåŸã®è¡ã1ã«èšå®ãããŠããããã®ããã·ãŒãžã£ãå床åŒã³åºããšãã¹ã±ãŒãªã³ã°ä¿æ°ã®èª¿æŽãå®éã«è¡ãããªãããšã«æ³šæããŠãã ããã ããã¯ãå
¬åŒã¬ã€ãã®ãœãªã¥ãŒã·ã§ã³ãã¢ãã€ã«ã§æ©èœããªãã®ãšåãåé¡ã«ãããã®ã§ãã äœããã®çç±ã§ãSplashScreenã¯ã©ã¹ã¯ãæåã«ã¹ã±ãŒãªã³ã°ä¿æ°ãèæ
®ã«å
¥ããŠç»åã®ãµã€ãºãéç¥ããããã€ã¹ã®å転ãªã©ã®ãããªãæäœãªãã§è¡šç€ºãããŸãã ãã®ãããåæåäžã«ããã®ä¿æ°ã¯æåã®æäœã®ããã«ä¿åããããã以éã®ä¿æ°ã§ã¯1ã«ãªã»ãããããŸãã
Windows 10ã®ä»åŸã®ãã«ãã®1ã€ã§ã¯ããã®å¥åŠãªç¶æ³ã解æ¶ãããå¯èœæ§ãããããã®ã³ãŒããå€æŽããå¿
èŠããããŸããããããŸã§ã®ãšãããFall Creators UpdateãŸã§ã®ãªãªãŒã¹ããããã¹ãŠã®ã¢ã»ã³ããªã§æ£åžžã«åäœããŸãã
å¥ã®èæ
®äºé
ã¯ã2çªç®ã®ç»åã®ãµã€ãºèšå®ã§ãã ããæ£ç¢ºã«ã¯ããã®å Žåããµã€ãºãèšå®ããã ãã§ãªããäœçœ®ãèšå®ããããšã«éå®ãããŸãããªããªããæåã¯ãã¬ãŒãããã«é åã§ã¯ãªãäžå€®ã«ããããã§ãã
ã¡ãªã¿ã«ãç»åã¯æ£æ¹åœ¢ã§ãããé«ããæ¯äŸããŠåããµã€ãºã«å€æŽããããããå¹
ãªã©ãçåŽã®ãµã€ãºã®ã¿ãèšå®ããã ãã§ååã§ãã ãµã€ãºãèšå®ããå Žåãã¹ã±ãŒãªã³ã°ä¿æ°ã®èª¿æŽã«å ããŠãã¡ã€ã³ç»åã«åºã¥ããŠãµã€ãºã調æŽããŸãã ããæ£ç¢ºã«ã¯ãç»åã®å¹
ãåºæºã«ããŠããã®ãµã€ãºãå ãããã¬ãŒãã®å²åãèšç®ããŸãã ç§ã®å Žåã0.3073ã§ãã
次ã«ãåãããžãã¯ã«åºã¥ããŠãç»åå
šäœã®å¹
ãåºæºãšããŠãäžå¿ããç®çã®ãã€ã³ããŸã§ã®è·é¢ãèšç®ããŸãã 次ã®è¡ã§ã¯ãã€ã³ãã³ããå·Šã«æšå®è·é¢ãŸã§èšå®ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããã®æ®µéã§çµæãã¡ã€ã³ã®ã¹ãã©ãã·ã¥ç»é¢ãšèŠèŠçã«å€ãããªãããšã確èªããŸãã ããã§ãã¢ãã€ã«ã§ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšãããŒã¹ã®ã€ã¡ãŒãžã«æ¯ã¹ãŠã€ã¡ãŒãžã®ããããªã·ãããèŠãããŸãã ããã¯ãããŒã¹ç»é¢ãç»é¢ã®äžå€®ã«äœçœ®ãããããé»è©±ã®äžéšã«ããã¹ããŒã¿ã¹ããŒãäžéšã®ã¢ãã«ã«ããäžéšã®ä»®æ³ãã¿ã³ããŒãªã©ã®ã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãå®å
šã«ç¡èŠããããã§ãã ã³ãŒãã«å¿
èŠãªå€æŽãå ããŸãããã
æåã«ãã¹ããŒã¿ã¹ããŒã®é«ããæ ŒçŽããå€æ°ãæºåããŸãã
Friend statusBarRect As Rect : If Metadata.ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar") Then statusBarRect = StatusBar.GetForCurrentView.OccludedRect End If
ãã®ã³ãŒãã¯ãäžåºŠã«2ã€ã®é¢ã§èå³æ·±ããã®ã§ãã ãŸããããã§åããŠãé©å¿ã³ãŒãã«çŽé¢ããŠããŸããããã«ã€ããŠã¯ãåã®èšäºã§èª¬æããŸããã æ¡ä»¶ã®æ¬è³ªã¯ãã¿ãŒã²ããããã€ã¹äžã«ç®çã®ã¯ã©ã¹ãååšãããã©ããã確èªããååšããå Žåã¯ãæ¡ä»¶å
ã®ã³ãŒãããšã©ãŒãªãã§å®è¡ãããããšã§ãã
ã¢ãããã£ãã³ãŒãã«ãããããããStatusBarãžã®ã¢ã¯ã»ã¹ã¯æåããããã®ãããªã¯ã©ã¹ãååšããªããšããã¡ãã»ãŒãžãåãåããŸãã ããã¯ãæåã«UWPã¢ããªã±ãŒã·ã§ã³ã«ã¯ãæäœãªãã§ãµããŒããããŠãããã¹ãŠã®ããã€ã¹ã§å®è¡ã§ããå
±éã³ãŒãã®ã¿ãå«ãŸããŠããããã§ãã ç¹å®ã®ãã©ãããã©ãŒã ã«åºæã®ã¯ã©ã¹ãžã®ãªã³ã¯ã¯åå¥ã«è¿œå ãããŸãã ã¹ããŒã¿ã¹ããŒã¯ã¢ãã€ã«ããã€ã¹ã«åºæã§ãããããæåã«ç®çã®ã¯ã©ã¹ã©ã€ãã©ãªãžã®ãªã³ã¯ãè¿œå ããå¿
èŠããããŸãã [ãããžã§ã¯ã]> [ãªã³ã¯ã®è¿œå ...]ã¡ãã¥ãŒã«ç§»åããŸãã å·ŠåŽã«ããŠãããŒãµã«ãŠã£ã³ããŠãã»ã¯ã·ã§ã³ãšãµãã»ã¯ã·ã§ã³ãæ¡åŒµæ©èœãããããŸãã ã©ã€ãã©ãªã®ãªã¹ãã§ãUWPçšã®Windows Mobileæ¡åŒµæ©èœãã©ã€ãã©ãªãèŠã€ããã¢ããªã±ãŒã·ã§ã³ã®æå°ããŒãžã§ã³ã«çããããŒãžã§ã³ãéžæããŸãã
ããã§ãäžèšã®ã³ãŒãã¯ãšã©ãŒãªãã§æ©èœããŸãã ããæ£ç¢ºã«ã¯ãã¢ãã€ã«ã§ã®ã¿åäœããä»ã®ãã¹ãŠã®ããã€ã¹ã§ã¯ç¡èŠãããŸãã
æåŸã«ãäœçœ®æ±ºããšç»åãµã€ãºã®èšå®ã³ãŒããä¿®æ£ããŸãã
Private Sub SetSizeImage() SplashScreenImage1.Height = splashImageRect.Height / ScaleFactor SplashScreenImage1.Width = splashImageRect.Width / ScaleFactor SplashScreenImage1.Margin = New Thickness(0, -statusBarRect.Height, 0, 0) SplashScreenImage2.Width = splashImageRect.Width / ScaleFactor * 0.3073 SplashScreenImage2.Margin = New Thickness(-splashImageRect.Width / ScaleFactor * 0.547, -splashImageRect.Width / ScaleFactor * 0.1633 - statusBarRect.Height, 0, 0) SplashScreenImage3.Height = splashImageRect.Height / ScaleFactor SplashScreenImage3.Width = splashImageRect.Width / ScaleFactor SplashScreenImage3.Margin = New Thickness(0, -statusBarRect.Height, 0, 0) ScaleFactor = 1 End Sub
è¿œå ãããã³ãŒãã¯ãåç»åãã¹ããŒã¿ã¹ããŒã®é«ããšçãããµã€ãºã ãäžæ¹ã«ã·ããããŸããã¢ããªã±ãŒã·ã§ã³ãä»»æã®ããã€ã¹ã§èµ·åããããšãç»åã¯åºæ¬ç»åãšåãå Žæã«é
眮ãããŸãã æ®å¿µãªããããã®ãœãªã¥ãŒã·ã§ã³ã¯ãŸã å®å
šã§ã¯ãããŸããã äžéšã®é»è©±ã¢ãã«ã«ã¯ããŒããŠã§ã¢ãã¿ã³ããªãã代ããã«é»è©±ã³ã³ãããŒã«ãã¿ã³ãé»è©±èªäœã®ä»®æ³ããã«ã«é
眮ãããŠãããããåãã·ããå¹æãçºçããæ€çŽ¢ããªãã£ãããããã®ããã«ã®é«ããååŸããå Žæã«é¢ããæ
å ±ãèŠã€ãããŸããã§ããããŸããäžè¬çã«ãå¿
èŠãªå€æŽãè¡ãããã«ããã®ååšãŸãã¯äžåšã«é¢ããæ
å ±ãåä¿¡ããŸãã ãã®æ
å ±ãããå Žåã¯ãã³ã¡ã³ãã§å¿
ãå
±æããŠãã ããã
å¿
èŠãªèª¿æŽããã¹ãŠè¡ãããã®ã§ããŠã£ã³ããŠã®ãµã€ãºå€æŽãŸãã¯ããã€ã¹ã®åãã«å¯Ÿããåå¿ãè¿œå ããå¿
èŠããããŸãã
Private Sub ExtendedSplash_OnResize(sender As Object, e As WindowSizeChangedEventArgs) If splash IsNot Nothing Then splashImageRect = splash.ImageLocation SetSizeImage() End If End Sub
ããã§ã¯ãã¹ãŠãéåžžã«ç°¡åã§ãã SplashScreenã¯ã©ã¹ãæ ŒçŽãããªããžã§ã¯ãã空ãã©ããã確èªãã空ã§ãªãå Žåã¯ãµã€ãºæ
å ±ãåé€ããŠãããSetSizeImageããã·ãŒãžã£ãç¹°ãè¿ããŸãã
. , . , - , DismissedEventHandler. , . :
Private Async Sub DismissedEventHandler(sender As SplashScreen, args As Object) Await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, New DispatchedHandler(AddressOf DismissExtendedSplash)) End Sub
DismissExtendedSplash , . , Async Await, . : Await , , . Await / /, Async.
DismissExtendedSplash, :
Private Async Sub DismissExtendedSplash() LoadingSatatusTextBox.Text = " ..." Await Task.Delay(New TimeSpan(0, 0, 15)) Dim rootFrame As New Frame rootFrame.Navigate(GetType(MainPage)) Window.Current.Content = rootFrame End Sub
. , , . . , 15 . , 15 , .
, Frame, . , .
: , 15 .
5.
, , «». .
XAML :
<Grid Background="{StaticResource BackgroundBrush}"> <Grid.Resources> <Storyboard x:Name="ImageRotateAnimation"> <DoubleAnimation Storyboard.TargetName="ImageRotate" Storyboard.TargetProperty="Angle" To="360" BeginTime="0:0:0.5" Duration="0:0:5" RepeatBehavior="Forever"/> </Storyboard> </Grid.Resources> <Image x:Name="SplashScreenImage3" Source="Assets/SplashScreens/SplashScreen3.png" Canvas.ZIndex="3" HorizontalAlignment="Center" VerticalAlignment="Center"/> <Image x:Name="SplashScreenImage2" Source="Assets/SplashScreens/SplashScreen2.png" Canvas.ZIndex="2" HorizontalAlignment="Center" VerticalAlignment="Center" RenderTransformOrigin="0.5 0.5"> <Image.RenderTransform> <RotateTransform x:Name="ImageRotate" Angle="0"/> </Image.RenderTransform> </Image> <Image x:Name="SplashScreenImage1" Source="Assets/SplashScreens/SplashScreen1.png" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock x:Name="LoadingSatatusTextBox" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20" TextAlignment="Center" Foreground="{StaticResource ForegroundBrush}" FontWeight="Bold"/> </Grid>
. -, 0 . , .
-, Storyboard, Double. Double . . , .
, . New :
ImageRotateAnimation.Begin
, , .

.
, , , .