ãŸããã
ãåç¥ã®ããã«ãAndroidåãã«éçºããå Žåã¯ãèãããããã¹ãŠã®ãã¯ã»ã«å¯åºŠã®ãªãœãŒã¹ãäœæããããã«ã¬ã€ã¢ãŠãããå¿
èŠããããŸãã åœåããã®ãããªå¯åºŠã¯
ldpi ã
mdpi ãããã³
hdpiã® 3ã€ã ã
ã§ãã ã ãã ããé²æ©ã¯
æ¢ãŸããŸãããç»é¢ã®ãã¯ã»ã«å¯åºŠã¯éåžžã«é«ãå€ã«æé·ããGoogleã¯æåãxããéãã«
ã¡ãã£ãšèŠãŠ
xxxhdpiã«å°éã ã
æ倧 6ã€ã®ã¡ã€ã³ç»é¢æ§æã«ãªããŸããã ããã¯ãã«ãŒã«ã«åŸã£ãŠãã¬ã€ããå Žåãã¢ã€ã³ã³ããšã«åããŒã¹ã®ãªãœãŒã¹ãç¯çŽããå¿
èŠãããããšãæå³ããŸãã ããããäžéšã®ãªãœãŒã¹ã«ã¯ããã€ãã®ç°ãªãç¶æ
ããããããããã ãã§ã¯ãããŸããã ã¢ã¯ã·ã§ã³ããŒã®ãã¿ã³ã«ã¯2ã€ã®ç¶æ
ãããããããã©ãã«ãã£ãŠããéåžžã®ãã¿ã³ã«ã¯ãã£ãšå€ãã®ç¶æ
ããããŸãã
ããã€ãã®è§£æ±ºçããããŸããã¢ãŒãã£ã¹ããæ·åããå€ãã®å¯åºŠã®ãµããŒãã«åŸãåããã·ã¹ãã ãäœããã®æ¹æ³ã§ããããã¹ã±ãŒãªã³ã°ããããšãæãããããã°ã©ããŒãæãããããããšã掻çšããããšãã§ããŸãïŒèªååã ãã®ããžãã¹ãå®è¡ã§ããããŸããŸãªããŒã«ããããŸãã æãé«åºŠãªã®ã¯ããããã
Android Asset Studioã§ãã ããã¯éåžžã«è³¢æãªããŒã«ã§ããããã¡ãããã¢ã€ã³ã³ã¯æšæºçãªå Žåã«ã®ã¿æç»ãããŸããç¬èªã®ã¹ã¿ã€ã«ã§ãã¿ã³ãäœæããå¿
èŠãããå Žåã圌ã¯ããã§ã¯åœ¹ã«ç«ã¡ãŸããã ãããŠããã§ãæªåé«ãããŒã«ã§ããAdobe Photoshopã®ã¹ã¯ãªãããµããŒãã圹ç«ã¡ãŸãã å
šäœã®ããã»ã¹ãç°¡çŽ åããããã«ãè¬èãªäœ¿çšäººèªèº«ãåæ§ã®ã±ãŒã¹ã®ããã«ããã€ãã®ããŒã«ãäœæããããããèªè
ãšå
±æããŠããŸãã ãããã®äœ¿çšæ¹æ³ãšåäœã«ã€ããŠã¯ãããã«èª¬æããŸãã ãã¹ãŠã®ãœãŒã¹ã¯
BitBucketã«ãããŸãããããã§ã¯äž»ãªãã€ã³ãã説æããåå¿è
ã«ã¯æããã§ã¯ãªããããããªãPhotoshopã¹ã¯ãªãããæäœããããã€ãã®ããªãã¯ã瀺ããŸãã 念ã®ãããPhotoshop CS6çšã«äœæããããšã«æ³šæããŠãã ããã
ã¹ã¯ãªãããšåäœåçã䜿çšãã
ã¹ã¯ãªããã«ã€ããŠèª¬æãã
åã« ãPhotoshopã®ã¹ã¯ãªãããèšè¿°ããäžè¬çãªããã»ã¹ã説æãã
åä»»è
ã®
èšäºãžã®ãªã³ã¯ãæäŸããå¿
èŠããããŸãã èŠããã«ããã®ããã®æšæºããŒã«ã¯ExtendScript Toolkitã§ãããã°ã©ãã£ãã¯ãšãã£ã¿ãŒèªäœãšäžç·ã«é
åžãããŸãã æ²ããããšã«ããšãã£ã¿ãŒãæ¬åœã«éåžžã«æãã§ãããšããäžèšã®èšäºã®èè
ã«çµ¶å¯Ÿã«åæããããšã«æ³šæããªããã°ãªããŸããã ããããããã¯äœã§ãããããã§ãã ãã¡ãããã¹ã¯ãªãããçŽæ¥èšè¿°ããããšã¯ã§ããŸãããã¹ã¯ãªãããèšè¿°ããããšã¯ã§ããŸãããããããã°ã®ããã«ã¹ã¯ãªãããäœæããå¿
èŠããããŸãã F1ãã¿ã³ãšPhotoshopã«çµã¿èŸŒãŸããŠããæ©èœã«é¢ããããã¥ã¡ã³ãããããŸããããã¯ãšãã£ã¿ãŒèªäœãšåããããäžäŸ¿ã§ãããå°ãªããšããã®äž»ãªæ©èœãå®è¡ããŸãã ã¹ã¯ãªããèªäœã¯ããŸããŸãªèšèªã§èšè¿°ã§ããç§èªèº«ã¯JavaScriptã䜿çšããŸããã
ãã¹ãŠã®å¯åºŠã®ã¢ã€ã³ã³ãäœæãã
ãããžã«æ»ããšããªãœãŒã¹ãæäœããããã®ãã¹ãŠã®èšè¿°ã¹ã¯ãªããã¯2ã€ã®éšåã«åããããšãã§ããŸãïŒäžéšã¯å¿
èŠãªã¢ã¯ã·ã§ã³ã®å®è¡ãçŽæ¥éå§ããŸãïŒãã¹ãŠãMakeããšããåèªã§å§ãŸããŸãïŒããä»ã¯æ©èœãåããã©ã€ãã©ãªã®åœ¹å²ãæãããŸãã æãéèŠã§æ®éçãªããŒã«ã¯
MakeForAllDensitiesã§ã ãããã¯ãååã瀺ããšããã®ããšãè¡ããŸãã1ã€ã®ããã¥ã¡ã³ããããã¹ãŠã®å¯åºŠã®ãªãœãŒã¹ãäœæããŸãã ããã¥ã¡ã³ãã«ã¯ããã€ãã®èŠä»¶ããããŸãã
- ããã¥ã¡ã³ãã¯ããã¯ã»ã«å¯åºŠmdpiã§äœæããå¿
èŠããããŸã ã ããã¯ããŒã¹ãšããŠäœ¿çšãããç®çã®ãµã€ãºã«ã¹ã±ãŒãªã³ã°ãããŸãã
- ææžã¯ãã¹ã¯ãªããããã¡ã€ã«åãæ£ããèªã¿åãããã«ïŒããã³ãã¬ãã£ãã¯ã¹ ".9"ã䜿çšããŠnine-patchã§ãããã©ãããå€æããããã«ïŒæ¢ã«ã©ããã«ä¿åãããŠããå¿
èŠããããŸãã Androidãããžã§ã¯ãã®ã«ãŒããã©ã«ããŒã®ãµããã©ã«ããŒã«ä¿åããããšããå§ãããŸãããããããšãã¹ã¯ãªããã¯resãã©ã«ããŒèªäœãèŠã€ããŸãã
- è¿œå èŠä»¶ïŒããã9ãããã®å Žåãç·ã¯å¥ã®ã¬ã€ã€ãŒãæãäžã«æç»ããå¿
èŠããããŸãã
- ãã¡ãããç»åã¯ã©ã¹ã¿ãŒã§ã¯ãªããã¯ãã«ã§ãªããã°ãªããŸãããããã§ãªããã°ãAndroidã§ã¯ãªãPhotoshopã䜿çšããŠã¹ã±ãŒãªã³ã°ããããšã«ã¯ã»ãšãã©æå³ããããŸããã äŸå€ã1ã€ãããŸããããã¯9ãããã©ã€ã³ã«ã¯é©çšããããã©ã¹ã¿ãŒã«ããããšãã§ããŸãã
ãããã®èŠä»¶ããã¹ãŠæºããããŠããå Žåãæ®ãã¯ãã§ã«æè¡çãªåé¡ã§ããPhotoshopã§ããã¥ã¡ã³ããéããããã«ã¯ãªãã¯ããŠã¹ã¯ãªãããéå§ããŸãã éå§åŸãã¹ã¯ãªããã¯ãªãœãŒã¹ïŒresïŒãå«ããã©ã«ããŒãæå®ããããã«èŠæ±ããŸããããã¥ã¡ã³ãããããžã§ã¯ãã®ãµããã©ã«ããŒã«ä¿åãããŠããå Žåã¯ãä¿åå
ãèŠã€ããŠãããæ®ãã®åŠçãè¡ããŸãã
ã¹ã¯ãªããèªäœã¯éåžžã«ã·ã³ãã«ã«èŠããŸãã
å¥åŠãªæåã®2è¡ãé€ããå
žåçãªJavaScriptã æåã®å¥åŠãªè¡ã¯ãå®éã®ã³ã¡ã³ãã§ã¯ãªãéåžžã®ã³ã¡ã³ãã«äŒŒãŠããŸãããå¿
èŠãªæ©èœãåããå¥ã®ãã¡ã€ã«ã®ã€ã³ããŒãã§ãã æšæºã®JavaScriptã§ã¯ãã®ãããªãããã¯å転ããªããããããã
äžçªã®ããªãã¯ã§ãã 2çªç®ã®å¥åŠãªè¡ã¯ãç°¡åã«æšæž¬ã§ããããã«ãã¹ã¯ãªãããPhotoshopã§å®è¡ããããšã瀺åããŠããŸãã æ®ãã®è¡ãè¡ãããšãResizingAndSaving.jsxãéãããŸãã
ããã«ã¯ç¹å¥ãªãã®ã¯ãªãã®ã§ã
detectFolder
ã¯æã¡ãŸãããé¢æ°ã¯resãã©ã«ããŒãããã¥ã¡ã³ããã©ã«ããŒã®ãµããã©ã«ããŒã«ãããã©ããã確èªããèŠã€ãã£ãå Žåã¯ãããè¿ããèŠã€ãããªãå Žåã¯ãŠãŒã¶ãŒã«å°ããŸãã ãããŠãã¹ã¯ãªããã®ããéèŠãªéšåãå§ãŸããŸãã
function saveForAllDensities(outputFolder, version, postfix, ninePatchLines) { if (!ninePatchLines) ninePatchLines = computeNinePatchLines(); var versionStr = version ? "-v" + version : ""; saveInFolder(outputFolder, "drawable-mdpi" + versionStr, 100, postfix, ninePatchLines); saveInFolder(outputFolder, "drawable-hdpi" + versionStr, 150, postfix, ninePatchLines); saveInFolder(outputFolder, "drawable-xhdpi" + versionStr, 200, postfix, ninePatchLines); saveInFolder(outputFolder, "drawable-xxhdpi" + versionStr, 300, postfix, ninePatchLines); saveInFolder(outputFolder, "drawable-xxxhdpi" + versionStr, 400, postfix, ninePatchLines); }
誰ãããããæã£ãŠããå Žåãç§ã¯äºåã«è³ªåã«çããŸãïŒ
ldpiã¯ããã«ãã
ãŸãã ãGoogle
ã¯ããå°çšã®ãªãœãŒã¹ãäœæããããšãæšå¥šããŠããªãããã§ãã åè¿°ã®ããã«ããã¡ã€ã«ã¯9ãããã§ããå ŽåããããŸããããã¯ããã¡ã€ã«ãç·šéãããšããæå³ã§ã¯ããšããžã«é»ãç·ã®ããå¥ã®ã¬ã€ã€ãŒãããããšãæå³ããŸãã ãŸãããããã®ç·ãåçŽã«ååŸããŠæ¡å€§çž®å°ããããšã¯ã§ããŸããããã¯ã»ã«ãå®å
šã«é»ã«å¡ãã€ã¶ããããŸã£ããå¡ãã€ã¶ãå¿
èŠããªããé£æ¥ãããã¯ã»ã«ã«ç»ãããšã¯ã§ããŸããã ããã«ãç·ããã£ããããŠããªãå¯èœæ§ãããããšã«çæããå¿
èŠããããŸãã ããã
computeNinePatchLines
é¢æ°ãäœçšããå Žæã§ãã
function computeNinePatchLines() { var docName = getDocName(false); if (!isNinePatch(docName)) return null; var ninePatchLines = null; var doc = app.activeDocument; var areaCheckingFunctions = [ function(pos) {return areaIsEmpty(doc, pos, 0);}, function(pos) {return areaIsEmpty(doc, 0, pos);}, function(pos) {return areaIsEmpty(doc, pos, doc.height - 1);}, function(pos) {return areaIsEmpty(doc, doc.width - 1, pos);} ]; maxPositions = [doc.width, doc.height, doc.width, doc.height]; ninePatchLines = new Array(); for (var pos = 0; pos < areaCheckingFunctions.length; pos++) { ninePatchLines.push(findLines(maxPositions[pos], areaCheckingFunctions[pos])); } return ninePatchLines; }
ãã®é¢æ°ã®äž»ãªãã€ã³ãã¯ãç»åã®å蟺ã«æ²¿ã£ãŠæ©ããé»ãç·ãã©ãã«é ããŠãããã確èªããããšã§ãã ããããèŠã€ãã£ãåŸãããªãã¯æ¢ã«ããªãã¯ãªãã§ãããã®é·ããææã®ä¿æ°ã§ä¹ç®ããæåŸ
ã©ããã«ææã®é åã«ãã€ã³ãããããšãã§ããŸãã
areaIsEmpty
é¢æ°ã調ã¹ããšé¢çœãã§ãããã
function areaIsEmpty(doc, x, y) { var state = getState(); if (doc.colorSamplers.length == 0) { var colorSampler = doc.colorSamplers.add([x,y]); } else { var colorSampler = doc.colorSamplers[0]; colorSampler.move([x, y]); } var areaEmpty; try { areaEmpty = colorSampler.color.rgb.hexValue !== "000000"; } catch (e) { areaEmpty = true; } restoreState(state); return areaEmpty; }
ãã®é¢æ°ã¯ããã¯ã»ã«ãé»ãå¡ãã€ã¶ãããŠãããã©ããããã§ãã¯ããããã«èšèšãããŠããŸãã ããã§ã®ã¿ãäºå®ãPhotoshopã§ã¯ãå€æããããã«ãæšæºAPIã䜿çšããŠãç¹å®ã®ãã¯ã»ã«ã空ã§ãããã©ããããã§ãã¯ããããšã¯ã§ããŸããã ãããã£ãŠãã«ã©ãŒãµã³ãã©ãŒãé
眮ããè²ããã§ãã¯ãããšãã«äŸå€ãã¹ããŒãããã©ããã確èªããå¿
èŠããããŸãã çºè¡ãããå Žåããã¯ã»ã«ã¯ç©ºã§ãã ããã§ãªãå Žåã¯ããã®è²ãèŠãããšãã§ããŸãã ããã¯
ããªãã¯ãã³ããŒ2ã§ãã ããã§ã¯
areaIsEmpty
ããªã
findLines
é¢æ°ã¯ãç»é¢ã®4ã€ã®å¢çç·ã®1ã€ã«æ²¿ã£ããã¹ãŠã®ãã¯ã»ã«ã«ã
areaIsEmpty
ã1è¡ã§é©çšãããã®äœçœ®ãæžã蟌ã¿ãŸãã
次ã«ããªãœãŒã¹ãã¹ã±ãŒãªã³ã°ããŠããã©ã«ããŒã«ä¿åã§ããŸãã
function saveInFolder(outputFolder, subFolder, scaling, postfix, ninePatchLines) { var opts = new ExportOptionsSaveForWeb(); opts.format = SaveDocumentType.PNG; opts.PNG8 = false; opts.transparency = true; opts.quality = 100; var state = getState(); if (ninePatchLines) { var doc = app.activeDocument; doc.resizeCanvas(doc.width - 2, doc.height - 2); resize(scaling, true); doc.resizeCanvas(doc.width + 2, doc.height + 2); drawLines(doc, scaling / 100, ninePatchLines); } else { resize(scaling, true); } activeDocument.exportDocument(createFile(outputFolder, subFolder, postfix, ".png", false), ExportType.SAVEFORWEB, opts); restoreState(state); }
ããã«ãããã®ã¯ãã¹ãŠãååãšããŠæçœã§ãããåçã®ãµã€ãºãçŽæ¥å€æŽããæ¹æ³ã¯æ¬¡ã®ãšããã§ããå¥ã®èª¬æãå¿
èŠã§ãã
Document.resizeImage
é¢æ°ãããããããåŒã³åºãã ãã§ããããã«æããŸããïŒ ããããããããã¯äœãèµ·ãããŸãããã¬ã€ã€ãŒã¹ã¿ã€ã«ã¯åæã«ã¹ã±ãŒãªã³ã°ãããŸããã ã¢ã¯ã·ã§ã³ãèšé²ããŠãããã°ã©ã ã§åçã§ããŸãã ãã®ãªãã·ã§ã³ã¯æ©èœããŸããããããã®ã¢ã¯ã·ã§ã³ã®ã©ã€ãã©ãªãã¹ã¯ãªããã«æ·»ä»ããå¿
èŠããããèµ·åããåã«ã€ã³ããŒãããå¿
èŠããããããã©ããããããããŸã䟿å©ã§ã¯ãããŸããã
ãã1ã€ã®ãªãã·ã§ã³ã¯
ããã§ã«èšåããåä»»è
ã説æããããŒã«ãã€ãŸãScriptListener.8liã䜿çšããããšã§ãã ãã®ããŒã«ã䜿çšãããšãPhotoshopã§å®è¡ããããã¹ãŠã®ã¢ã¯ã·ã§ã³ãã¹ã¯ãªããã«æžã蟌ãããšãã§ããŸãããããã®ã¢ã¯ã·ã§ã³ã¯ãæšæºAPIã§ã¯ãµããŒããããŠããŸããã åºå£ã®ã¹ã¯ãªããã¯ããã¡ããããªãäžæçã§ãããå®å
šã«ã¿ã¹ã¯ãå®è¡ããŸãã ããããã®åªåãããã°ãã©ã®ãã©ã¡ãŒã¿ãŒãäœã«è²¬ä»»ãããã®ãââãç解ããèšé²ãããç¹å®ã®ã¢ã¯ã·ã§ã³ã®æ©èœãäœæã§ããŸãã ãã®ããã«ããŠãç解ã§ããªããå®è¡å¯èœãªæ©èœãçŸããŸããã
function resize(size, relative) { var idImgS = charIDToTypeID( "ImgS" ); var desc = new ActionDescriptor(); var idWdth = charIDToTypeID( "Wdth" ); var idPxl = charIDToTypeID( relative ? "#Prc" : "#Pxl" ); desc.putUnitDouble( idWdth, idPxl, size ); var idscaleStyles = stringIDToTypeID( "scaleStyles" ); desc.putBoolean( idscaleStyles, true ); var idCnsP = charIDToTypeID( "CnsP" ); desc.putBoolean( idCnsP, true ); var idIntr = charIDToTypeID( "Intr" ); var idIntp = charIDToTypeID( "Intp" ); var idbicubicSharper = stringIDToTypeID( "bicubicAutomatic" ); desc.putEnumerated( idIntr, idIntp, idbicubicSharper ); executeAction( idImgS, desc, DialogModes.NO ); }
ããã¯
ããªãã¯ãã³ããŒ3ã§ããã å¿
èŠãªç»åãµã€ãºãååŸããããšãã¹ã¯ãªããã¯å¿
èŠã«å¿ããŠ9ãããã®ç·ãæç»ããæ°ããäœæããããªãœãŒã¹ãå¿
èŠãªãã©ã«ããŒã«éä¿¡ãããŸãã
ã¢ã¯ã·ã§ã³ããŒã¢ã€ã³ã³ã®äœæ
MakeForAllDensitiesã«å ããŠãã¢ã¯ã·ã§ã³ããŒã®ã¢ã€ã³ã³ãäœæãã
MakeActionBarIconsã¹ã¯ãªãããããã«4ã€ãããŸããé»ãšçœã®ããŒãã®å ŽåãåæãããŠããå ŽåãšåæãããŠããªãå Žåã§ãã ãããã¯MakeForAllDensitiesãšåãæ¹æ³ã§äœ¿çšãããŸãããããã¥ã¡ã³ãã«ã¯1ã€ã®ã¬ã€ã€ãŒã®ã¿ãå«ãŸããããã«ãªããŸããã ãã®ã¬ã€ã€ãŒã§ã¯ãã¢ã€ã³ã³ã®åœ¢ç¶ã芳å¯ããããšã®ã¿ãéèŠã§ãããã¹ã¯ãªããã¯ã¹ã¿ã€ã«èªäœãé©çšããŸãã
çŸåšã®é£ç¹ã¯ãGoogleã
ã¢ã€ã³ã³ã®ç¶æ
ã«å¿ããŠç¹å®ã®
ã¹ã¿ã€ã«èŠä»¶ãæã£ãŠããããšã§ãã ã¢ã€ã³ã³ã1ã€ã®ç¶æ
ã«ã®ã¿ååšããå Žåããã¹ãŠã¯åçŽã§ãããã¢ã€ã³ã³ããªãã«ããå¿
èŠãããå Žåã¯ãããã°ã©ã ã§ã¬ã€ã€ãŒã®å€èŠ³ãå€æŽããæ¹æ³ãç解ããå¿
èŠããããŸãã ã¢ã¯ã·ã§ã³ããŒã®ã¢ã€ã³ã³ã«ã€ããŠã¯ãã¬ã€ã€ãŒã®éæ床ãšãã®è²ãå€æŽããæ¹æ³ãç¥ãå¿
èŠããããŸãã åè
ã«ã¯åé¡ã¯ãããŸããããåŸè
ã«é¢ããŠã¯ãæšæºã®APIã§ãã¹ã©ãã¯ãçºçããŸãã ããã¯ãä¿åããŠããScriptListener.8liãå床æå¹ã«ããå¿
èŠãããããšãæå³ããŸãã ãã®é©çšã®çµæããã¯ã¿ãŒã¬ã€ã€ãŒã®è²ã®å€æŽã«åœ¹ç«ã€é¢æ°
setLayerColor
ãStylesãã¡ã€ã«ã«ç»å ŽããŸããã é¢æ°ã®æ¬æã«ãããã®æå³äžæãªãã®ã¯ãããããçç¥ããŸãã
ååãšããŠãäžèšä»¥å€ã®ã¢ã¯ã·ã§ã³ããŒã¢ã€ã³ã³ã«ã¯äœãå¿
èŠãããŸããã ããããæ¢ã«Stylesãã¡ã€ã«ãèŠãŠãã人ã¯ãScriptListener.8liã䜿çšããŠãã¬ã€ã€ãŒå¹æãæäœã§ããããå€ãã®é¢æ°ãååŸãããŠããããšã«æ°ä»ããŸããã ãããã¯ç§èªèº«ã®ã¢ã€ã³ã³çšã«äœæããããã®ã§ãäœæçšã®ã¹ã¯ãªããã¯ãªããžããªã«è¿œå ããŸããã ãã®ããããã¡ãããæ¢åã®æ©èœã¯èª°ãã«ãšã£ãŠååã§ã¯ãªãå¯èœæ§ããããç¬èªã®æ©èœãäœæããå¿
èŠããããŸãã ç¹°ãè¿ããŸãããã¢ã¯ã·ã§ã³ãèšé²ããããã¹ã¿ã€ã«ãäœæããŠããã°ã©ã ã§é©çšã§ããŸãã ããããããã¯äžäŸ¿ã§ãããããã£ãŠãScriptListener.8liã®å©ç¹ãæ¢ã«ç¿åŸããŠãããããé¢æ°ãå床䜿çšããããšããå§ãããŸãã ãŸããå¥ã®é害ããããŸããç¹å®ã®ã¬ã€ã€ãŒå¹æãè¿œå ããŠé¢æ°ã«é
眮ããã¹ã¯ãªãããäœæãããšããããé©çšããããšãæ¢ã«ã€ã³ã¹ããŒã«ãããŠããå¹æãæ¶ããŸãã
ããªãã¯4ã¯ããã§åœ¹ç«ã¡ãŸãã ScriptListener.8liããšãã§ã¯ãã®åã¢ããªã±ãŒã·ã§ã³ã«äžãããŽãã®å§ãŸãã«æ³šæãæããšãã©ãã«ã§ã次ã®ãããªè¡ã衚瀺ãããŸãã
var idsetd = charIDToTypeID( "setd" ); var desc = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref = new ActionReference(); var idPrpr = charIDToTypeID( "Prpr" ); var idLefx = charIDToTypeID( "Lefx" ); ref.putProperty( idPrpr, idLefx ); var idLyr = charIDToTypeID( "Lyr " ); var idOrdn = charIDToTypeID( "Ordn" ); var idTrgt = charIDToTypeID( "Trgt" ); ref.putEnumerated( idLyr, idOrdn, idTrgt ); desc.putReference( idnull, ref ); var idT = charIDToTypeID( "T " ); var desc2 = new ActionDescriptor(); var idScl = charIDToTypeID( "Scl " ); var idPrc = charIDToTypeID( "#Prc" ); desc2.putUnitDouble( idScl, idPrc, 100.000000 );
ãããŠãã¹ã¯ãªããã®æåŸã§ããã¹ãŠããã®ã³ãŒãã§çµãããŸãïŒ
var idLefx = charIDToTypeID( "Lefx" ); desc.putObject( idT, idLefx, desc2 ); executeAction( idsetd, desc, DialogModes.NO );
äžèšã®ã³ãŒãã®æåã®éšåã®æåŸã®4è¡ã¯ã
desc2
ãäœæããã¹ã¿ã€ã«ã®ã¹ã±ãŒã«ãèšå®ããã¬ã€ã€ãŒã¹ã¿ã€ã«èªäœãäœæããŸãã ãã以å€ã¯ãã¹ãŠã¹ã¿ã€ã«ã®äœ¿çšã§ãã 圌ããäœãããŠããã®ããããã£ãã®ã§ãèããéèãåé¢ããå¹æãçŽæ¥é©çšããã³ãŒãã®éšåãåé¢ããããšãã§ããŸãã éè€ããã»ã¯ã·ã§ã³ã¯ãã¹ã¿ã€ã«ã§åå¥ã®é¢æ°ã«ã¹ã¿ã€ã«èšå®ãããåæ§ã®æ¹æ³ã§é©çšãããŸãã
var style = newStyle();
ããã§ãã¹ãŠã®ããŒã«ãæã«å
¥ããŸããããããã䜿çšããå¿
èŠããããŸãã ãããã®å¥è·¡çãªæ段ã¯ãã¹ãŠãå·ã«å¿ããŠç°ãªãã¹ã¿ã€ã«ããªãœãŒã¹ã«é©çšããããã«èæ¡ãããããšãæãåºããŠãã ããã
makeIcons
é¢æ°ã¯ããŸãã«ãããè¡ããŸããã¢ã¯ã·ã§ã³ããŒã®ã¢ã€ã³ã³ã«ããŸããŸãªã¹ã¿ã€ã«ãé©çšããçµæãä¿åããŸãã ããã«åœŒå¥³ã®ã¡ã€ã³ããŒã¹ãæã£ãŠããã
if (makeStateful) { var selectorData = [ { state_enabled: false, postfix: "disabled" }, { postfix: "normal" } ]; makeSelectorXml(selectorData, outputFolder, "drawable"); } var styleFunctions = [function(style) {applyActionBarItemStyle(whiteTheme, false)}]; var postfixes = ["normal"]; if (makeStateful) { styleFunctions.unshift(function(style) {applyActionBarItemStyle(whiteTheme, true)}); postfixes.unshift("disabled"); } saveStyledDrawables(outputFolder, styleFunctions, postfixes);
é¢æ°ã®æåã®éšåã¯ããªãœãŒã¹ã®ã»ã¬ã¯ã¿ãŒãäœæããŸãã ã»ã¬ã¯ã¿ãŒã«ã€ããŠã¯ãæè¿å
¬éã
ããAndroidã®ãã¿ã³ã·ãŒã¯ã¬ããã®èšäºã§èª¬æãããŠããŸãã ãã®å Žåãã¢ã¯ã·ã§ã³ããŒã«å¯ŸããŠ2ã€ã®ç¶æ
ãäœæãããŸãããã¿ã³ããªãã®ãšããšãéåžžã®ç¶æ
ã®ãšãã§ãã ãããã£ãŠãç¶æ
ãèšè¿°ãããªããžã§ã¯ãã®é
åã
makeSelectorXml
é¢æ°ã«æž¡ãããŸãã ãªããžã§ã¯ãã«ã¯ã
postfix
眮ãã£ãŒã«ããšãå¿
èŠã«å¿ããŠãstate_ãã§å§ãŸã1ã€ä»¥äžã®ãã£ãŒã«ãããããŸãã ãã®åŸã
makeSelectorXml
ã¯ãã®å¥è·¡ããXMLã»ã¬ã¯ã¿ãŒãã¡ã€ã«ãäœæãããã®ãã¡ã€ã«ã
makeSelectorXml
ãã©ã«ããŒã«éä¿¡ããŸãã
é¢æ°ã®2çªç®ã®éšåã¯2ã€ã®é
åãäœæããŸãã1ã€ã¯ç¹å®ã®ç¶æ
ã«ã¹ã¿ã€ã«ãé©çšããé¢æ°ãå«ã¿ã2çªç®ã®é
åã¯ç¶æ
ã«å¯Ÿå¿ããæ¥å°ŸèŸãå«ã¿ãŸãã ã¹ã¿ã€ã«ãé©çšããããã®åé¢æ°ã¯ã
style
åŒæ°ãèªç±ã«äœ¿çšã§ããŸãã ããã¯
newStyle
ããã¯ããŒã«ãããªããžã§ã¯ããšåããã®ã§ãã ãããã®é¢æ°ã§
applyStyle
ãåŒã³åºãå¿
èŠã¯ãããŸãã
saveStyledDrawables
é¢æ°ã
saveStyledDrawables
ãåŠçã
saveStyledDrawables
ã é¢æ°
makeSelectorXml
ãš
saveStyledDrawables
ã¯æå®ããªãã§ãã ãããæãæ®éã®éå±ãªJavaScriptãããããã§ãã
ãããã«
ãã®æ¹æ³ã§ã¯ãå€æ°ã®ã¢ã€ã³ã³ãæåã§æç»ããããšã¯ã§ããŸããããæ¢è£œã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããŠã1ã€ã®ç»åãããã¹ãŠãäœæããŸãã ãã¡ãããAndroid Asset Studioã䜿çšã§ããŸãããã¹ã¯ãªããã䜿çšããããšã«ã¯å©ç¹ããããŸãã ãŸããç¬èªã®ãã¿ã³çšã®ã¹ã¯ãªãããäœæã§ããŸãããã®ã¹ã¿ã€ã«ã¯ãå€åœã®æ¥œåšã§ã¯äœ¿çšã§ããŸããïŒå®éããã®ãã¹ãŠãæžãããšã«ããŸããïŒã 第äºã«ããã¡ã€ã«ããµã€ãã«ã¢ããããŒãããèšå®ãæãã€ããåŸãåä¿¡ãããã¡ã€ã«ãããŠã³ããŒãããŠãã©ã«ããŒã«ç§»åããããšã¯ãã¹ã¯ãªãããããã«ã¯ãªãã¯ããŠãã¹ãŠãããã«ãããã»ã©åçŽã§ã¯ãããŸããã ããã«ãAndroid Asset Studioã¯PSDãçŽæ¥æäœããããªãïŒå°ãªããšãå·çæç¹ã§ã¯ïŒã9ããããéåžžã®ã¢ã€ã³ã³ãšåºå¥ããããã®äžã®ãã¡ã€ã«ã倧éã«åŠçããããšã¯ã§ããŸããã
ãã®èšäºããAndroidã§ã¢ããªã±ãŒã·ã§ã³ã®äœæã«åŸäºããŠãã人ãšãPhotoshopã®ã¹ã¯ãªããã®äœæããã¹ã¿ãŒããã人ã®äž¡æ¹ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
䟿å©ãªãªã³ã¯