├── .gitignore
├── AndroidResizer.icns
├── LICENSE
├── build.xml
├── manifest.mf
├── nbproject
├── build-impl.xml
├── build-native.xml
├── build-native.xml~
├── genfiles.properties
├── project.properties
└── project.xml
├── package
├── macosx
│ ├── .DS_Store
│ ├── AndroidResizer-background.png
│ ├── AndroidResizer-dmg-setup.scpt
│ ├── AndroidResizer-volume.icns
│ ├── AndroidResizer.icns
│ └── Info.plist
└── windows
│ ├── AndroidResizer-setup-icon.bmp
│ └── AndroidResizer.ico
├── readme.md
└── src
└── androidresizer
├── ARIconSmall.png
├── AResizerFrame.form
├── AResizerFrame.java
├── AResizerScreenShot.png
├── AndroidResizer.java
├── DensityChooser.form
├── DensityChooser.java
├── Page 6.gif
├── Resizer.png
├── ResizerIconBlue.gif
└── package
├── .DS_Store
├── macosx
├── .DS_Store
├── AndroidResizer-background.png
├── AndroidResizer-dmg-setup.scpt
├── AndroidResizer-volume.icns
├── AndroidResizer.icns
└── Info.plist
└── windows
└── AndroidResizer.ico
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 |
3 | # Mobile Tools for Java (J2ME)
4 | .mtj.tmp/
5 |
6 | # Package Files #
7 | *.war
8 | *.ear
9 |
10 | lib/appbundler-1.0.jar
11 | lib/jarbundler-2.3.1.jar
12 |
13 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
14 | hs_err_pid*
15 |
16 | # Netbeans
17 | nbproject/private/
18 | build/
19 | nbbuild/
20 | dist/
21 | nbdist/
22 | nbactions.xml
23 | nb-configuration.xml
24 |
25 | # OSX
26 | .DS_Store
27 |
28 | # Persistence
29 | InputDirectory.txt
--------------------------------------------------------------------------------
/AndroidResizer.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/AndroidResizer.icns
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 BlitzKraig
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/build.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Builds, tests, and runs the project AndroidResizer.
12 |
13 |
14 |
15 |
16 |
17 |
22 |
23 |
24 |
25 |
85 |
86 |
--------------------------------------------------------------------------------
/manifest.mf:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.2
2 | SplashScreen-Image: androidresizer/Page 6.gif
3 | X-COMMENT: Main-Class will be added automatically by build
4 | Class-Path: package/windows/
5 |
--------------------------------------------------------------------------------
/nbproject/build-native.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
49 |
50 |
51 |
53 | Native Packager Ant calls based on SE support in JavaFX packager
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
230 |
231 |
232 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 | self.addMappedName(
465 | (source.indexOf("jfxrt.jar") >= 0) ||
466 | (source.indexOf("deploy.jar") >= 0) ||
467 | (source.indexOf("javaws.jar") >= 0) ||
468 | (source.indexOf("plugin.jar") >= 0)
469 | ? "" : source
470 | );
471 |
472 |
473 |
474 |
475 |
476 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 |
946 |
947 |
948 |
949 |
950 |
951 |
952 |
953 |
954 |
--------------------------------------------------------------------------------
/nbproject/build-native.xml~:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
49 |
50 |
51 |
53 | Native Packager Ant calls based on SE support in JavaFX packager
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
230 |
231 |
232 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 | self.addMappedName(
465 | (source.indexOf("jfxrt.jar") >= 0) ||
466 | (source.indexOf("deploy.jar") >= 0) ||
467 | (source.indexOf("javaws.jar") >= 0) ||
468 | (source.indexOf("plugin.jar") >= 0)
469 | ? "" : source
470 | );
471 |
472 |
473 |
474 |
475 |
476 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
699 |
700 |
701 |
702 |
703 |
704 |
705 |
706 |
707 |
708 |
709 |
710 |
711 |
712 |
713 |
714 |
715 |
716 |
717 |
718 |
719 |
948 |
949 |
950 |
951 |
952 |
953 |
954 |
955 |
956 |
--------------------------------------------------------------------------------
/nbproject/genfiles.properties:
--------------------------------------------------------------------------------
1 | build.xml.data.CRC32=854c9779
2 | build.xml.script.CRC32=db322f10
3 | build.xml.stylesheet.CRC32=8064a381@1.74.2.48
4 | # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
5 | # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
6 | nbproject/build-impl.xml.data.CRC32=476b20f3
7 | nbproject/build-impl.xml.script.CRC32=cc8dec11
8 | nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.74.2.48
9 |
--------------------------------------------------------------------------------
/nbproject/project.properties:
--------------------------------------------------------------------------------
1 | annotation.processing.enabled=true
2 | annotation.processing.enabled.in.editor=false
3 | annotation.processing.processors.list=
4 | annotation.processing.run.all.processors=true
5 | annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
6 | application.splash=/Users/planys/Desktop/Page 6.gif
7 | application.title=AndroidResizer
8 | application.vendor=BlitzKraig
9 | auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
10 | build.classes.dir=${build.dir}/classes
11 | build.classes.excludes=**/*.java,**/*.form
12 | # This directory is removed when the project is cleaned:
13 | build.dir=build
14 | build.generated.dir=${build.dir}/generated
15 | build.generated.sources.dir=${build.dir}/generated-sources
16 | # Only compile against the classpath explicitly listed here:
17 | build.sysclasspath=ignore
18 | build.test.classes.dir=${build.dir}/test/classes
19 | build.test.results.dir=${build.dir}/test/results
20 | # Uncomment to specify the preferred debugger connection transport:
21 | #debug.transport=dt_socket
22 | debug.classpath=\
23 | ${run.classpath}
24 | debug.test.classpath=\
25 | ${run.test.classpath}
26 | # Files in build.classes.dir which should be excluded from distribution jar
27 | dist.archive.excludes=
28 | # This directory is removed when the project is cleaned:
29 | dist.dir=dist
30 | dist.jar=${dist.dir}/AndroidResizer.jar
31 | dist.javadoc.dir=${dist.dir}/javadoc
32 | endorsed.classpath=
33 | excludes=
34 | file.reference.package-macosx=package/macosx
35 | file.reference.package-windows=package/windows
36 | includes=**
37 | jar.archive.disabled=${jnlp.enabled}
38 | jar.compress=false
39 | jar.index=${jnlp.enabled}
40 | javac.classpath=\
41 | ${file.reference.package-windows}:\
42 | ${file.reference.package-macosx}
43 | # Space-separated list of extra javac options
44 | javac.compilerargs=
45 | javac.deprecation=false
46 | javac.processorpath=\
47 | ${javac.classpath}
48 | javac.source=1.7
49 | javac.target=1.7
50 | javac.test.classpath=\
51 | ${javac.classpath}:\
52 | ${build.classes.dir}
53 | javac.test.processorpath=\
54 | ${javac.test.classpath}
55 | javadoc.additionalparam=
56 | javadoc.author=false
57 | javadoc.encoding=${source.encoding}
58 | javadoc.noindex=false
59 | javadoc.nonavbar=false
60 | javadoc.notree=false
61 | javadoc.private=false
62 | javadoc.splitindex=true
63 | javadoc.use=true
64 | javadoc.version=false
65 | javadoc.windowtitle=
66 | jnlp.codebase.type=no.codebase
67 | jnlp.descriptor=application
68 | jnlp.enabled=false
69 | jnlp.mixed.code=default
70 | jnlp.offline-allowed=false
71 | jnlp.signed=false
72 | jnlp.signing=
73 | jnlp.signing.alias=
74 | jnlp.signing.keystore=
75 | main.class=androidresizer.AndroidResizer
76 | # Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed
77 | manifest.custom.codebase=
78 | # Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions)
79 | manifest.custom.permissions=
80 | manifest.file=manifest.mf
81 | meta.inf.dir=${src.dir}/META-INF
82 | mkdist.disabled=false
83 | native.bundling.enabled=true
84 | platform.active=default_platform
85 | run.classpath=\
86 | ${javac.classpath}:\
87 | ${build.classes.dir}
88 | # Space-separated list of JVM arguments used when running the project.
89 | # You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
90 | # To set system properties for unit tests define test-sys-prop.name=value:
91 | run.jvmargs=
92 | run.test.classpath=\
93 | ${javac.test.classpath}:\
94 | ${build.test.classes.dir}
95 | source.encoding=UTF-8
96 | src.dir=src
97 | test.src.dir=test
98 |
--------------------------------------------------------------------------------
/nbproject/project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | org.netbeans.modules.java.j2seproject
4 |
5 |
6 |
7 |
8 |
9 | AndroidResizer
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/package/macosx/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/package/macosx/.DS_Store
--------------------------------------------------------------------------------
/package/macosx/AndroidResizer-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/package/macosx/AndroidResizer-background.png
--------------------------------------------------------------------------------
/package/macosx/AndroidResizer-dmg-setup.scpt:
--------------------------------------------------------------------------------
1 | tell application "Finder"
2 | tell disk "AndroidResizer"
3 | open
4 | set current view of container window to icon view
5 | set toolbar visible of container window to false
6 | set statusbar visible of container window to false
7 |
8 | -- size of window should match size of background
9 | set the bounds of container window to {400, 100, 917, 370}
10 |
11 | set theViewOptions to the icon view options of container window
12 | set arrangement of theViewOptions to not arranged
13 | set icon size of theViewOptions to 128
14 | set background picture of theViewOptions to file ".background:background.png"
15 |
16 | -- Create alias for install location
17 | make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
18 |
19 | -- First, move all files far enough to be not visible if user has "show hidden files" option set
20 | -- Note: this only make sense if "hidden" files are also visible on the build system
21 | -- otherwise command below will only return list of non-hidden items
22 | set filesToHide to the name of every item of container window
23 | repeat with theFile in filesToHide
24 | set position of item theFile of container window to {1000, 0}
25 | end repeat
26 |
27 | -- Now position application and install location
28 | set position of item "AndroidResizer" of container window to {120, 135}
29 | set position of item "Applications" of container window to {390, 135}
30 |
31 | close
32 | open
33 | update without registering applications
34 | delay 5
35 | end tell
36 | end tell
37 |
38 |
--------------------------------------------------------------------------------
/package/macosx/AndroidResizer-volume.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/package/macosx/AndroidResizer-volume.icns
--------------------------------------------------------------------------------
/package/macosx/AndroidResizer.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/package/macosx/AndroidResizer.icns
--------------------------------------------------------------------------------
/package/macosx/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LSMinimumSystemVersion
6 | 10.7.4
7 | CFBundleDevelopmentRegion
8 | English
9 | CFBundleExecutable
10 | AndroidResizer
11 | CFBundleIconFile
12 | AndroidResizer.icns
13 | CFBundleIdentifier
14 | androidresizer.androidresizer
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | AndroidResizer
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | 1.0
23 | CFBundleSignature
24 | ????
25 |
27 | LSApplicationCategoryType
28 | unknown
29 | CFBundleVersion
30 | 100
31 | NSHumanReadableCopyright
32 | Unknown
33 | JVMRuntime
34 | jdk1.7.0_45.jdk
35 | JVMMainClassName
36 | com.javafx.main.Main
37 | JVMAppClasspath
38 |
39 | JVMMainJarName
40 | AndroidResizer.jar
41 | JVMPreferencesID
42 | androidresizer/androidresizer
43 | JVMOptions
44 |
45 |
46 |
47 | JVMUserOptions
48 |
49 |
50 |
51 | NSHighResolutionCapable
52 | true
53 |
54 |
55 |
--------------------------------------------------------------------------------
/package/windows/AndroidResizer-setup-icon.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/package/windows/AndroidResizer-setup-icon.bmp
--------------------------------------------------------------------------------
/package/windows/AndroidResizer.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/package/windows/AndroidResizer.ico
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | Android Resizer – ReadMe
2 | ===
3 |
4 | This project is being restructured.
5 | --
6 | The next iteration will be a [node module](https://github.com/BlitzKraig/AndroidResizer-Node) which can be used as a standalone CLI tool or as a dependency for another node project, followed by an [electron frontend](https://github.com/BlitzKraig/Mallard). This project is unlikely to receive any further updates.
7 |
8 |
9 | 
10 |
11 | Created by [Craig Currie](https://github.com/BlitzKraig)
12 |
13 | Artwork by [Jan Putzan](https://github.com/janputzan)
14 |
15 | 
16 |
17 | What is AndroidResizer?
18 | ---
19 | AndroidResizer is a simple Java desktop app for automatically re-sizing android assets.
20 |
21 | AR will downscale your assets and copy them into an android-style folder structure.
22 |
23 | 
24 |
25 | Why is AndroidResizer?
26 | ---
27 | AR was a personal project to help speed up some of the tedious tasks when dealing with Android assets. With AR, you can scale down from XXXHDPI, which can be useful in a few ways. When creating new assets the benefits are obvious, simply create your XXXHDPI assets and scale them down straight into your project.
28 |
29 | It can also be useful when adding new assets into a project. Instead of getting the new assets for each density and dragging them into each DPI folder, simply drag your XXXHDPI asset into it’s folder then run AndroidResizer again to re-scale the folder down.
30 |
31 | _NOTE: You may want to back up your assets before running this tool. In the unlikely event that all of your assets get rekt, I can not be held responsible._
32 |
33 | #### Changelog:-
34 |
35 | ##### 1.4
36 | Quick release since someone requested this in the project issues:
37 | - Added XXXHDPI support
38 |
39 | I'll try to get another version out soon with some more features, and I've come up with an idea for 9-patch support which I'll be attempting to implement soon! Also hoping to get iOS support in the next release, along with the new GUI.
40 |
41 | ##### 1.3
42 | Been a bit lazy recently with this, but the project is progressing!
43 | You should find v1.3 in the releases tab, ready to go.
44 |
45 | - Added directory serialization (The program now remembers your last used input directory)
46 | - Added input density choice via combobox
47 | - Fixed TVDPI scaling (checkbox is still unselected by default, as TVDPI is rarely used)
48 | - Fixed rare "Directory is null!" bug
49 | - "Copy XXHDPI with prefix" is now "Copy origin prefix", and works with all densities.
50 | - Added notification beep on resizing completion
51 | - Minor misc. bugs
52 |
53 | ##### 1.2.2
54 | - Fixed XXHDPI copying scaling down to ldpi
55 | - Fixed some output
56 | - Fixed scaling issue for images with no alpha channel
57 |
58 | ##### 1.2.1
59 | - Added EXE generation
60 | - Added new icons & images
61 | - Updated DMG generation
62 | - Changed to Nimbus L&F
63 | - Made directory field manually editable
64 | - Disable/enable directory field when sizing is in progress/complete
65 | - Removed some unused files/code
66 |
67 | ##### 1.2
68 | - Added custom prefix for use with non-standard Android Resource structures (Titanium, PhoneGap etc.)
69 | - Added some tooltips
70 | - Altered some text output to fit with the new prefixing feature
71 | - Added XXHDPI Copy
72 | - Cleaned up variable names
73 | - Disable/enable all controls when sizing is in progress/complete
74 |
75 | ##### 1.1.1
76 | - Stability improvements
77 | - Output improvements
78 | - Fixed progress bar bug
79 |
80 | ##### 1.1
81 | - Added JPEG and GIF support (Animation not currently supported)
82 | - Improved scaling operations
83 |
84 | ##### 1.0.1
85 | - Added multi-threading to provide user feedback while processing images
86 | - Added ability to choose which DPI outputs to generate
87 | - Fixed transparency issues
88 |
89 | ##### 1.0
90 | - Initial Release
91 | - Scale all PNG images in an XXHDPI folder and save them to all lower DPI's (L, M, TV, H, XH)
92 |
93 |
94 |
95 | ###### PLANNED FEATURES
96 | - iOS support
97 | - Single file support
98 | - ~~Scale from other densities~~
99 | - Basic upscaling
100 | - Updated design
101 | - SVG support
102 | - Seperate source/destination folders
103 | - Multiple project configurations
104 | - ~~XXXHDPI support~~
105 | - 9-patch support
106 | - Generation Wizard
107 | - Build-step integration
108 |
109 | Android Image Resizing Asset Resizer Density Scale LDPI MDPI HDPI TVDPI XHDPI XXHDPI XXXHDPI DPI Resource Res
110 |
111 | REFERENCE
112 | ---
113 |
114 | From [a great StackOverflow post about android densities](http://stackoverflow.com/questions/11581649/about-android-image-size-and-assets-sizes)
115 |
116 | mdpi is the reference density -- that is, 1 px on an mdpi display is equal to 1 dip. The ratio for asset scaling is:
117 |
118 | ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
119 | --- | --- | --- | --- | --- | --- | --- | ---
120 | 0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4
121 |
122 | Although you don't really need to worry about tvdpi unless you're developing specifically for Google TV or the original Nexus 7 -- but even Google recommends simply using hdpi assets.
123 |
124 | What this means is if you're doing a 48dip image and plan to support up to xhdpi resolution, you should start with a 96px image (144px if you want native assets for xxhdpi) and make the following images for the densities:
125 |
126 | ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
127 | --- | --- | --- | --- | --- | --- | --- | ---
128 | 36 x 36 | 48 x 48 | 64 x 64 | 72 x 72 | 96 x 96 | 144 x 144 | 192 x 192
129 |
130 | And these should display at roughly the same size on any device, provided you've placed these in density-specific folders (e.g. drawable-xhdpi, drawable-hdpi, etc.)
131 |
132 | For reference, the pixel densities for these are:
133 |
134 | ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
135 | --- | --- | --- | --- | --- | --- | --- | ---
136 | 120 | 160 | 213 | 240 | 320 | 480 | 640
137 |
138 |
139 | 
140 |
141 |
142 | License
143 | ---
144 |
145 | The MIT License (MIT)
146 |
147 | Copyright (c) 2016 Craig Currie
148 |
149 | Permission is hereby granted, free of charge, to any person obtaining a copy
150 | of this software and associated documentation files (the "Software"), to deal
151 | in the Software without restriction, including without limitation the rights
152 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
153 | copies of the Software, and to permit persons to whom the Software is
154 | furnished to do so, subject to the following conditions:
155 |
156 | The above copyright notice and this permission notice shall be included in all
157 | copies or substantial portions of the Software.
158 |
159 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
160 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
161 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
162 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
163 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
164 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
165 | SOFTWARE.
166 |
--------------------------------------------------------------------------------
/src/androidresizer/ARIconSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/ARIconSmall.png
--------------------------------------------------------------------------------
/src/androidresizer/AResizerFrame.form:
--------------------------------------------------------------------------------
1 |
2 |
3 |
373 |
--------------------------------------------------------------------------------
/src/androidresizer/AResizerScreenShot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/AResizerScreenShot.png
--------------------------------------------------------------------------------
/src/androidresizer/AndroidResizer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 |
7 | package androidresizer;
8 |
9 | import java.awt.Image;
10 | import javax.imageio.ImageIO;
11 | import javax.swing.UIManager;
12 |
13 | /**
14 | *
15 | * @author planys
16 | */
17 | public class AndroidResizer {
18 |
19 | /**
20 | * @param args the command line arguments
21 | */
22 | public static void main(String[] args) {
23 | // TODO code application logic here
24 | // System.out.println("TEST");
25 | try {
26 | UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
27 | } catch (Exception ex) {
28 | ex.printStackTrace();
29 | }
30 | new AResizerFrame().setVisible(true);
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/androidresizer/DensityChooser.form:
--------------------------------------------------------------------------------
1 |
2 |
3 |
154 |
--------------------------------------------------------------------------------
/src/androidresizer/DensityChooser.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 |
7 | package androidresizer;
8 |
9 | /**
10 | *
11 | * @author planys
12 | */
13 | public class DensityChooser extends javax.swing.JDialog {
14 |
15 | /**
16 | * Creates new form DensityChooser
17 | */
18 | public DensityChooser(java.awt.Frame parent, boolean modal) {
19 | super(parent, modal);
20 | initComponents();
21 | }
22 |
23 | /**
24 | * This method is called from within the constructor to initialize the form.
25 | * WARNING: Do NOT modify this code. The content of this method is always
26 | * regenerated by the Form Editor.
27 | */
28 | @SuppressWarnings("unchecked")
29 | // //GEN-BEGIN:initComponents
30 | private void initComponents() {
31 |
32 | jTabbedPane1 = new javax.swing.JTabbedPane();
33 | jLabel3 = new javax.swing.JLabel();
34 | jLabel4 = new javax.swing.JLabel();
35 | jLabel2 = new javax.swing.JLabel();
36 | jLabel8 = new javax.swing.JLabel();
37 | jLabel1 = new javax.swing.JLabel();
38 | jLabel7 = new javax.swing.JLabel();
39 | jLabel6 = new javax.swing.JLabel();
40 | jLabel5 = new javax.swing.JLabel();
41 |
42 | setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
43 | setUndecorated(true);
44 | setOpacity(0.6F);
45 | setResizable(false);
46 | setType(java.awt.Window.Type.POPUP);
47 |
48 | jLabel3.setText("jLabel1");
49 | jTabbedPane1.addTab("tab2", jLabel3);
50 |
51 | jLabel4.setText("jLabel2");
52 | jTabbedPane1.addTab("tab1", jLabel4);
53 |
54 | jLabel2.setText("jLabel2");
55 | jTabbedPane1.addTab("tab1", jLabel2);
56 |
57 | jLabel8.setText("jLabel2");
58 | jTabbedPane1.addTab("tab1", jLabel8);
59 |
60 | jLabel1.setText("jLabel1");
61 | jTabbedPane1.addTab("tab2", jLabel1);
62 |
63 | jLabel7.setText("jLabel1");
64 | jTabbedPane1.addTab("tab2", jLabel7);
65 |
66 | jLabel6.setText("jLabel2");
67 | jTabbedPane1.addTab("tab1", jLabel6);
68 |
69 | jLabel5.setText("jLabel1");
70 | jTabbedPane1.addTab("tab2", jLabel5);
71 |
72 | javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
73 | getContentPane().setLayout(layout);
74 | layout.setHorizontalGroup(
75 | layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
76 | .addGroup(layout.createSequentialGroup()
77 | .addContainerGap()
78 | .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
79 | .addContainerGap(201, Short.MAX_VALUE))
80 | );
81 | layout.setVerticalGroup(
82 | layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
83 | .addGroup(layout.createSequentialGroup()
84 | .addContainerGap()
85 | .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
86 | .addContainerGap(85, Short.MAX_VALUE))
87 | );
88 |
89 | pack();
90 | }// //GEN-END:initComponents
91 |
92 | /**
93 | * @param args the command line arguments
94 | */
95 | public static void main(String args[]) {
96 | /* Set the Nimbus look and feel */
97 | //
98 | /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
99 | * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
100 | */
101 | try {
102 | for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
103 | if ("Nimbus".equals(info.getName())) {
104 | javax.swing.UIManager.setLookAndFeel(info.getClassName());
105 | break;
106 | }
107 | }
108 | } catch (ClassNotFoundException ex) {
109 | java.util.logging.Logger.getLogger(DensityChooser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
110 | } catch (InstantiationException ex) {
111 | java.util.logging.Logger.getLogger(DensityChooser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
112 | } catch (IllegalAccessException ex) {
113 | java.util.logging.Logger.getLogger(DensityChooser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
114 | } catch (javax.swing.UnsupportedLookAndFeelException ex) {
115 | java.util.logging.Logger.getLogger(DensityChooser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
116 | }
117 | //
118 |
119 | /* Create and display the dialog */
120 | java.awt.EventQueue.invokeLater(new Runnable() {
121 | public void run() {
122 | DensityChooser dialog = new DensityChooser(new javax.swing.JFrame(), true);
123 | dialog.addWindowListener(new java.awt.event.WindowAdapter() {
124 | @Override
125 | public void windowClosing(java.awt.event.WindowEvent e) {
126 | System.exit(0);
127 | }
128 | });
129 | dialog.setVisible(true);
130 | }
131 | });
132 | }
133 |
134 | // Variables declaration - do not modify//GEN-BEGIN:variables
135 | private javax.swing.JLabel jLabel1;
136 | private javax.swing.JLabel jLabel2;
137 | private javax.swing.JLabel jLabel3;
138 | private javax.swing.JLabel jLabel4;
139 | private javax.swing.JLabel jLabel5;
140 | private javax.swing.JLabel jLabel6;
141 | private javax.swing.JLabel jLabel7;
142 | private javax.swing.JLabel jLabel8;
143 | private javax.swing.JTabbedPane jTabbedPane1;
144 | // End of variables declaration//GEN-END:variables
145 | }
146 |
--------------------------------------------------------------------------------
/src/androidresizer/Page 6.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/Page 6.gif
--------------------------------------------------------------------------------
/src/androidresizer/Resizer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/Resizer.png
--------------------------------------------------------------------------------
/src/androidresizer/ResizerIconBlue.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/ResizerIconBlue.gif
--------------------------------------------------------------------------------
/src/androidresizer/package/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/package/.DS_Store
--------------------------------------------------------------------------------
/src/androidresizer/package/macosx/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/package/macosx/.DS_Store
--------------------------------------------------------------------------------
/src/androidresizer/package/macosx/AndroidResizer-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/package/macosx/AndroidResizer-background.png
--------------------------------------------------------------------------------
/src/androidresizer/package/macosx/AndroidResizer-dmg-setup.scpt:
--------------------------------------------------------------------------------
1 | tell application "Finder"
2 | tell disk "AndroidResizer"
3 | open
4 | set current view of container window to icon view
5 | set toolbar visible of container window to false
6 | set statusbar visible of container window to false
7 |
8 | -- size of window should match size of background
9 | set the bounds of container window to {400, 100, 917, 370}
10 |
11 | set theViewOptions to the icon view options of container window
12 | set arrangement of theViewOptions to not arranged
13 | set icon size of theViewOptions to 128
14 | set background picture of theViewOptions to file ".background:background.png"
15 |
16 | -- Create alias for install location
17 | make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
18 |
19 | -- First, move all files far enough to be not visible if user has "show hidden files" option set
20 | -- Note: this only make sense if "hidden" files are also visible on the build system
21 | -- otherwise command below will only return list of non-hidden items
22 | set filesToHide to the name of every item of container window
23 | repeat with theFile in filesToHide
24 | set position of item theFile of container window to {1000, 0}
25 | end repeat
26 |
27 | -- Now position application and install location
28 | set position of item "AndroidResizer" of container window to {120, 135}
29 | set position of item "Applications" of container window to {390, 135}
30 |
31 | close
32 | open
33 | update without registering applications
34 | delay 5
35 | end tell
36 | end tell
37 |
38 |
--------------------------------------------------------------------------------
/src/androidresizer/package/macosx/AndroidResizer-volume.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/package/macosx/AndroidResizer-volume.icns
--------------------------------------------------------------------------------
/src/androidresizer/package/macosx/AndroidResizer.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/package/macosx/AndroidResizer.icns
--------------------------------------------------------------------------------
/src/androidresizer/package/macosx/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LSMinimumSystemVersion
6 | 10.7.4
7 | CFBundleDevelopmentRegion
8 | English
9 | CFBundleExecutable
10 | AndroidResizer
11 | CFBundleIconFile
12 | AndroidResizer.icns
13 | CFBundleIdentifier
14 | androidresizer.androidresizer
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | AndroidResizer
19 | CFBundlePackageType
20 | APPL
21 | CFBundleShortVersionString
22 | 1.0
23 | CFBundleSignature
24 | ????
25 |
27 | LSApplicationCategoryType
28 | unknown
29 | CFBundleVersion
30 | 100
31 | NSHumanReadableCopyright
32 | Unknown
33 | JVMRuntime
34 | jdk1.7.0_45.jdk
35 | JVMMainClassName
36 | com.javafx.main.Main
37 | JVMAppClasspath
38 |
39 | JVMMainJarName
40 | AndroidResizer.jar
41 | JVMPreferencesID
42 | androidresizer/androidresizer
43 | JVMOptions
44 |
45 |
46 |
47 | JVMUserOptions
48 |
49 |
50 |
51 | NSHighResolutionCapable
52 | true
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/androidresizer/package/windows/AndroidResizer.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BlitzKraig/AndroidResizer/cc7e825910696832b59316d3b2c1099776d41aff/src/androidresizer/package/windows/AndroidResizer.ico
--------------------------------------------------------------------------------