Gegroet ik zit met enkele problemen/vragen ivm met programmeren voor android.
1) Eerst een algemene vraag die meerdere mensen wel zullen kunnen beantwoorden:
Als je naar games zoals angry birds kijkt of naar oude roms van vroeger, is hun totaal pakket altijd slechts enkele MB terwijl het toch zeer grote spellen zijn met een uitgebreide grafische verschijning. Als ik 1 afbeelding van al wat deftige kwaliteit wil toevoegen kom ik al aan gemakkelijke 1 MB voor die file zelf , hoe lossen ze dit op?
2) Ik kom maar neit toe met het voorgeschreven geheugen op Android. Ik ben bang dat ik met een Context leak zit , al snap ikd at nog niet genoeg om te weten waar hij zit. Mijn app draait enkel in portrait dus een leak door je GSM om te draaien kan het niet zijn, het moet dus een referntie zijn die ergens blijft hangen. Eigenlijk passeer ik maar 1 keer de context naar een zelfgemaakte Class en dat is de volgende:
3) In mijn spel wil ik 3 a 4 afbeeldingen op het scherm posten ( achtergrond en enkele figuurtjes). Maar ik moet de kwaliteit met de bovenstaande functie heel hard verminderen ( heel hard ). Anders vreet het bijna al mijn geheugen weg. Nu refereer ik weer naar angry birds waar veel meer "afbeeldingen" op het scherm te voorschijn komen in een verbluffende kwaliteit. Hoe is dit mogelijk?
Alvast bedankt voor jullie hulp!
Mvg,
Roel
1) Eerst een algemene vraag die meerdere mensen wel zullen kunnen beantwoorden:
Als je naar games zoals angry birds kijkt of naar oude roms van vroeger, is hun totaal pakket altijd slechts enkele MB terwijl het toch zeer grote spellen zijn met een uitgebreide grafische verschijning. Als ik 1 afbeelding van al wat deftige kwaliteit wil toevoegen kom ik al aan gemakkelijke 1 MB voor die file zelf , hoe lossen ze dit op?
2) Ik kom maar neit toe met het voorgeschreven geheugen op Android. Ik ben bang dat ik met een Context leak zit , al snap ikd at nog niet genoeg om te weten waar hij zit. Mijn app draait enkel in portrait dus een leak door je GSM om te draaien kan het niet zijn, het moet dus een referntie zijn die ergens blijft hangen. Eigenlijk passeer ik maar 1 keer de context naar een zelfgemaakte Class en dat is de volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| public class Graphics { private Context context; public Graphics(Context c) { context = c; } public Bitmap decodeFile(int file, int size) { BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeResource(context.getResources(),file,o); int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale=1; while(true) { if(width_tmp/2 < size || height_tmp/2 < size) break; width_tmp/=2; height_tmp/=2; scale*=2; } BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; return BitmapFactory.decodeResource(context.getResources(),file,o2); } } |
3) In mijn spel wil ik 3 a 4 afbeeldingen op het scherm posten ( achtergrond en enkele figuurtjes). Maar ik moet de kwaliteit met de bovenstaande functie heel hard verminderen ( heel hard ). Anders vreet het bijna al mijn geheugen weg. Nu refereer ik weer naar angry birds waar veel meer "afbeeldingen" op het scherm te voorschijn komen in een verbluffende kwaliteit. Hoe is dit mogelijk?
Alvast bedankt voor jullie hulp!
Mvg,
Roel