Files
adcity-demo/gradle/libs/android-icon-gen.gradle

55 lines
1.8 KiB
Groovy

import javax.imageio.ImageIO
import java.awt.Image
import java.awt.image.BufferedImage
import java.awt.geom.Ellipse2D
gradle.ext.generateAndroidIcons = { inputLogoPath, outputDirPath ->
def inputLogo = file(inputLogoPath)
def outputDir = file(outputDirPath)
def densities = [
mdpi : 48,
hdpi : 72,
xhdpi: 96,
xxhdpi: 144,
xxxhdpi: 192
]
if (!inputLogo.exists()) {
throw new GradleException("Logo file not found at ${inputLogo}")
}
def original = ImageIO.read(inputLogo)
densities.each { name, size ->
def dir = new File(outputDir, "mipmap-${name}")
dir.mkdirs()
// --- Regular square launcher ---
def square = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB)
def g = square.createGraphics()
g.drawImage(original.getScaledInstance(size, size, Image.SCALE_SMOOTH), 0, 0, null)
g.dispose()
def launcherFile = new File(dir, "ic_launcher.png")
ImageIO.write(square, "png", launcherFile)
def launcherFileF = new File(dir, "ic_launcher_foreground.png")
ImageIO.write(square, "png", launcherFileF)
println "Generated ${launcherFile} (${size}x${size})"
// --- Round launcher ---
def round = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB)
def gr = round.createGraphics()
// Create circular clipping mask
gr.setClip(new Ellipse2D.Float(0, 0, size, size))
gr.drawImage(original.getScaledInstance(size, size, Image.SCALE_SMOOTH), 0, 0, null)
gr.dispose()
def roundFile = new File(dir, "ic_launcher_round.png")
ImageIO.write(round, "png", roundFile)
println "Generated ${roundFile} (circular ${size}x${size})"
}
}