Layout und Grafik fragen an euch..

  • Antworten:20
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 1.525

11.06.2013 04:27:15 via Website

Hallo alle zusammen.

So ganz verstehe ich noch immer nicht den kram mit der dpi.
Also die Layouts/drawable Ordnern usw.

Ich möchte für jeden drawable Ordner, also hdpi,xhdpi,xxhdpi,mdpi und ldpi
eine unterschiedliche Grafik/Wallpaper oder oder erstellen.

Jetzt ist die frage wie groß darf MAX und MIN eine Grafik/Wallpaper oder etc sein in
den jeweiligen Ordnern? Oder muss sein?

Natürlich könnte ich alles in den drawable Ordner packen und er passt sich das
selbst an. Aber einige Handys die ich hier habe wollen das nicht.
Erst wenn ich es im passenden Ordner habe zeigen die es an.

Es geht hier um die Widget´s Layouts.



LG

— geändert am 11.06.2013 14:11:19

  • Forum-Beiträge: 2.173

11.06.2013 11:26:52 via Website

Grundsätzlich reicht es die Grafiken in einer Auflösung abzulegen, denn Android skaliert dann automatisch.
Wie gut die automatische Skalierung allerdings mit der Bildqualität umgeht, steht auf einem anderen Blatt.
Für perfekte Ergebnisse, sollte man also wohl selbst skalieren und jede Auflösung einzeln ablegen.

Die Frage ist, ob der Unterschied zwischen "ok" und "perfekt" überhaupt irgendwem auffällt ;-)
  • Forum-Beiträge: 1.525

11.06.2013 14:11:04 via Website

Naja mir ist es wichtig, weil einige Handys ab einer größe das nicht mehr mit machen und meckern oder nicht anzeigen.

Wenn ich im xhdpi z.B ein Wallpaper drin habe der zu groß ist wird es auf dem Handy nicht angezeigt in der Widget.


LG
  • Forum-Beiträge: 1.727

11.06.2013 14:22:12 via Website

Wenn du eine Gfx per R. Klasse benutzt wird das system die möglichst beste dir liefern. Wenn du alles nur z.b im drawable-mdpi ordner hast bekommst du auch nur mdpi grafiken, sieht auf dem nexus 10 dann entsprechend auch aus. Es lohnt das was in XML aufgelagert werden kann auch dort zu machen, dann gibt es weniger probleme, bzw das tweaken ist recht einfach.

Aber Grafiken wie eine Titel Grafik würde ich möglichst redundant halten damit du auf dem jeweiligen Gerät auch gut aussiehst.
Hier sind Grafiker gefragt :)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

  • Forum-Beiträge: 1.525

11.06.2013 14:38:22 via Website

Hey danke euch.

Ich habe in allen Ordnern die Grafiken drin.
hdpi,xhdpi,xxhdpi,mdpi und ldpi.
Versucht alle soweit anzupassen wie es geht.
Laut http://developer.android.com/guide/practices/screens_support.html

Aber die doofen Sony Handys gefällt das nicht.
Von meiner Schwester das Sony Xperia S verträgt ja garnichts.
Braucht aber die Bilder aus dem xhdpi Ordner. Ansonsten meckert er.
Und dann müssen die noch perfekt angepasst sein. Sonst meckert das Handy wieder.

Und wie meinst du das @Mac Grafiken in einer XML?


LG
  • Forum-Beiträge: 1.525

11.06.2013 14:54:34 via Website

Frank S.
Michele
Hallo alle zusammen.
Jetzt ist die frage wie groß darf MAX und MIN eine Grafik/Wallpaper oder etc sein in
den jeweiligen Ordnern? Oder muss sein?
LG


http://stackoverflow.com/questions/8168329/android-screen-sizes-in-pixels-for-ldpi-mdpi-hpdi

Danke Frank.

Habe das auch schon gefunden über Google.
Hat mir aber noch nicht viel weiter geholfen.

Oder ich verstehe es noch nicht so ganz :grin:
Lese mir das alles nochmal 1000x durch.


LG
  • Forum-Beiträge: 357

11.06.2013 15:11:15 via Website

Michele
Frank S.
Michele
Hallo alle zusammen.
Jetzt ist die frage wie groß darf MAX und MIN eine Grafik/Wallpaper oder etc sein in
den jeweiligen Ordnern? Oder muss sein?
LG


http://stackoverflow.com/questions/8168329/android-screen-sizes-in-pixels-for-ldpi-mdpi-hpdi

Danke Frank.

Habe das auch schon gefunden über Google.
Hat mir aber noch nicht viel weiter geholfen.

Oder ich verstehe es noch nicht so ganz :grin:
Lese mir das alles nochmal 1000x durch.


LG


naja, ich verstehe es so:
"which means how much pixels can fit into a single inch." wie viele Pixel in einen Inch passen.
ldpi = 1:0.75 1 Pixel in nen dreiviertel inch
mdpi = 1:1
hdpi = 1:1.5
xhdpi = 1:2
xxhdpi = 1:3

"so lets take an image with about the size of 100X100" , wenn dein Bild 100*100 groß sein soll dann umrechnen
for mdpi it should be 100X100
for ldpi it should be 75X75
for hdpi it should be 150X150
for xhdpi it should be 200X200
for xxhdpi it should be 300X300

dann kann es auch sein, dass Bildschirme mit unterschiedlicher Auflösung gleich groß sind, weil unterschiedliche Dichte der Pixel.
deshalp die dpi... sie sagen ja wieviel dichte ausgegeben wird.
http://labs.rampinteractive.co.uk/android_dp_px_calculator/
http://developer.android.com/guide/practices/screens_support.html

Also,einfach ein 300*300 Bild nehmen und den Rest macht Android von alleine =)

— geändert am 11.06.2013 15:12:35

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

  • Forum-Beiträge: 1.525

11.06.2013 15:53:24 via Website

Danke dir =)


Also du meinst 300x300 einfach in dem drawable Ordner rein?
Packe ich 300x300 nämlich in einem xhdpi oder xxhdpi, dann ist das so klein das du
das als Pickel nehmen kannst :grin:


LG
  • Forum-Beiträge: 357

12.06.2013 08:03:01 via Website

Michele
Danke dir =)


Also du meinst 300x300 einfach in dem drawable Ordner rein?
Packe ich 300x300 nämlich in einem xhdpi oder xxhdpi, dann ist das so klein das du
das als Pickel nehmen kannst :grin:


LG

naja, also in die res/drawable-xhdpi/ ... das skalieren übernimmt Android, aber der Unterschied sollte an sich nicht so gravierend sein...

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

  • Forum-Beiträge: 357

13.06.2013 10:48:54 via Website

klappt es ?

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

  • Forum-Beiträge: 1.525

13.06.2013 14:58:48 via Website

Hallo.

Soweit ja. Teste aber noch weiter.


LG und danke nochmal.
  • Forum-Beiträge: 357

13.06.2013 15:00:35 via Website

supi =)

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

  • Forum-Beiträge: 75

29.06.2013 17:52:39 via Website

Hallo ich hätte auch eine frage zu Drawables allgemein.

Ich habe mir nun einen drawable Ordner erstellt (den gab es nicht) und habe dort allerhand Bilder reingepackt. .jpg .png etc.
Diese haben alle die selbe Größe 300x300.

In meinem Fall handelt es sich um eine App die eine Note berechnet und dazu soll sie dann ein Bild (Smiley ausgeben).

http://i39.tinypic.com/241w20k.png

Das Bild soll zwischen Note und den Buttons sein wo auch laut main_activity.xml die ImageView sitzt.
Der Image View kann ich ja eine min/maxHeight und min/maxWidth geben. Doch wenn ich das mache bleibt das bild genauso groß und es würde in meiner Theorie abgeschnitten wenn ich die Größe der ImageView kleiner mache wie das eigentliche Bild.

Ich teste hier lokal auf meinem Galaxy Nexus.

Hoffe mir kann jemand helfen.
Danke

Mit freundlichen Grüßen

— geändert am 29.06.2013 17:55:49

Gelöschter Account
  • Forum-Beiträge: 115

29.06.2013 18:19:12 via Website

Hallo Philipp,

schau dir das mal an:
1android:scaleType="fitXY"

Damit passt sich dein Bild der ImageView Größe an.


Grüße

— geändert am 29.06.2013 19:12:20

Teste dein IT-Wissen! - IT Quiz

  • Forum-Beiträge: 75

29.06.2013 18:30:49 via Website

Chrisdroid
Hallo Philipp,

schau dir das mal an:
1android:scaleType="fitXY"

Damit passt sich dein Bild der ImageView Größe an.
Wichtig ist hierbei, dass man für die ImageView aufjedenfall android:src benutzt und nicht android:background.

Grüße

Danke für die fixe Antwort. Das finde ich aktuell noch schwierig heraus zu finden, da über die Gui nicht alle parameter angeboten werden :D
Aber was meinst du mit android:src?
Muss ich in die ImageView alle Bilder einfügen?
1android:src="@drawable/bild1"
2android:src="@drawable/bild2"
3etc

per code hole ich mir die Bilder aktuell so.

1public final static Integer[] imageResIds = new Integer[] {R.drawable.troll_1, R.drawable.notbad_2, R.drawable.igiveafuck_3, R.drawable.sad, R.drawable.spit_5, R.drawable.boss_6};
2[...]
3public void onClick(View view)
4 {
5
6 if (view.getId()==R.id.btn1calc)
7 {
8 [..]
9 if (note == 1)
10 {
11ImageView smiley_view = (ImageView)findViewById(R.id.noten_view);
12 Bitmap image = BitmapFactory.decodeResource(getResources(), imageResIds[6]);
13 smiley_view.setImageBitmap(image);
14 }
15 }

— geändert am 29.06.2013 18:31:23

Gelöschter Account
  • Forum-Beiträge: 115

29.06.2013 19:15:27 via Website

Habe das gerade mal getestet und habe festgestellt das ich selber nen kleinen Fehler hatte..
das android:src ist nicht nötig. Es müsste reichen wenn du nur den ScaleType änderst.

1smiley_view.setScaleType(ImageView.ScaleType.FIT_XY);

Teste dein IT-Wissen! - IT Quiz

  • Forum-Beiträge: 75

29.06.2013 20:36:58 via Website

Super Danke funktioniert! =)

Eine weitere Frage habe ich noch.
1if (note == 1)
2 {
3 ImageView smiley_view = (ImageView)findViewById(R.id.noten_view);
4 Bitmap image = BitmapFactory.decodeResource(getResources(), imageResIds[5]);
5 smiley_view.setScaleType(ImageView.ScaleType.FIT_XY);
6 smiley_view.setImageBitmap(image);
7
8 }

Warum kann ich ImageView mSmiley_view ... nicht in die setupwidgets()/(oncreate) methode auslagern? Er sagt die view wird nie verwendet etc.?
Kann man das ganze noch irgend wie verkürzen? Wenn ich daraus jetzt ein switch case mache wird das viel code für 6 Noten :D

Das ganze auslagern in eine andere Klasse wäre noch eine Option.

//Edit Case funktioniert ja gar nicht mit double :D
//Edit2 Warum kann der selbe Name für die ImageView und die Bitmap nicht zweimal verwendet werden? (Image already defined in the scope)
Gruß

— geändert am 29.06.2013 20:57:40

Gelöschter Account
  • Forum-Beiträge: 115

29.06.2013 23:35:59 via Website

Philipp K.

Warum kann ich ImageView mSmiley_view ... nicht in die setupwidgets()/(oncreate) methode auslagern? Er sagt die view wird nie verwendet etc.?
Kann man das ganze noch irgend wie verkürzen? Wenn ich daraus jetzt ein switch case mache wird das viel code für 6 Noten :D

Wenn du deine ImageView innerhalb der OnCreate Methode deklarierst, kannst du sie auch nur dort benutzen. Du könntest sie für die ganze Klasse bzw Activity deklarieren, um sie auch in anderen Methoden nutzen zu können.

Das ganze kannst du auch noch kürzen in dem du eine Methode für das ändern der ImageView erstellst.

Beispiel:
1public void setImage(int pos){
2ImageView smiley_view = (ImageView)findViewById(R.id.noten_view);
3 Bitmap image = BitmapFactory.decodeResource(getResources(), imageResIds[pos]);
4 smiley_view.setScaleType(ImageView.ScaleType.FIT_XY);
5 smiley_view.setImageBitmap(image);
6}

Zu deinem Switch Case Problem:
Du könntest dein Double wieder auf ein Integer Casten, wenn du mit ganzen Noten rechnest.

Grüße

— geändert am 29.06.2013 23:38:04

Teste dein IT-Wissen! - IT Quiz