S
snatch
Neues Mitglied
- 1
Hallo,
Ich schreibe hier gerade an einer App und komme einfach nicht weiter. Es geht um Positionierung auf verschiedenen Geräten.
Klar, an sich ist die beste Lösung das ganze mit dp zu lösen. Jetzt ist die Frage ob ich zu blöd bin, oder ob es einfach nicht funktioniert.
Das Problem stellt sich so dar, dass ich eine Grafik bzw. mehrere Grafiken habe, die sich auf jedem Gerät ausgehend von der Mitte des Displays immer an derselben Stelle positionieren sollen.
Beim entwickeln teste ich im Simulator immer auf den Plattformen Nexus 4, Nexus 5 und Nexus 7. Von Tablets will ich noch gar nicht denken.
Nun ist es so, dass die Grafiken sich zwar immer die Mitte herum positionieren, jedoch sind Abstände einfach immer viel zu unterschiedlich.
Momentan stehe ich einfach auf'm Schlauch. An sich sollte das umrechnen in dp doch funktionieren.
Hier noch ein paar Informationen zu meinem Code.
Ich positioniere die Grafiken in einem Imageview mittels margin Angaben. Hier die Funktion die dafür zuständig ist:
Wäre das super, wenn mir da jemand weiterhelfen könnte.
Grüße.
Ich schreibe hier gerade an einer App und komme einfach nicht weiter. Es geht um Positionierung auf verschiedenen Geräten.
Klar, an sich ist die beste Lösung das ganze mit dp zu lösen. Jetzt ist die Frage ob ich zu blöd bin, oder ob es einfach nicht funktioniert.
Das Problem stellt sich so dar, dass ich eine Grafik bzw. mehrere Grafiken habe, die sich auf jedem Gerät ausgehend von der Mitte des Displays immer an derselben Stelle positionieren sollen.
Beim entwickeln teste ich im Simulator immer auf den Plattformen Nexus 4, Nexus 5 und Nexus 7. Von Tablets will ich noch gar nicht denken.
Nun ist es so, dass die Grafiken sich zwar immer die Mitte herum positionieren, jedoch sind Abstände einfach immer viel zu unterschiedlich.
Momentan stehe ich einfach auf'm Schlauch. An sich sollte das umrechnen in dp doch funktionieren.
Hier noch ein paar Informationen zu meinem Code.
Ich positioniere die Grafiken in einem Imageview mittels margin Angaben. Hier die Funktion die dafür zuständig ist:
Code:
private void showAnimation() {
this.clearElements();
Object[] father = (Object[])this.theStates.get(this.currentState.get("father"));
Object[][] child = (Object[][])father[0];
for(int i = 0; i < child.length; i++) {
RelativeLayout.LayoutParams exampleParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
exampleParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
if(child[i][5].getClass() == Integer.class || child[i][7].getClass() == Integer.class) {
exampleParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
if(this.isTablet(this.context)) {
// Um das Nexus 7 zu erkennen.
if(this.getDensity(this.context) != 1.33f) {
// Positionierung ausgehend von der Displaymitte
exampleParams.leftMargin = dpToPx((Integer)child[i][7]);
exampleParams.topMargin = dpToPx((Integer)child[i][8]);
} else {
// Positionierung ausgehend von der Displaymitte
exampleParams.leftMargin = (int)(this.displayWidthMiddle + (Integer)child[i][5]);
exampleParams.topMargin = (int)(this.displayHeightMiddle + (Integer)child[i][6]);
}
} else {
// Positionierung ausgehend von der Displaymitte
exampleParams.leftMargin = (int)(this.displayWidthMiddle + (Integer)child[i][5]);
exampleParams.topMargin = (int)(this.displayHeightMiddle + (Integer)child[i][6]);
}
} else if(child[i][5].getClass() == String.class || child[i][7].getClass() == String.class) {
exampleParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
if(this.isTablet(this.context)) {
exampleParams.topMargin = (int)(this.displayHeightMiddle + (Integer)child[i][8]);
} else {
exampleParams.topMargin = (int)(this.displayHeightMiddle + (Integer)child[i][6]);
}
}
// Animation
ImageView e = new ImageView(this.context);
e.setImageDrawable((BitmapDrawable) this.context.getResources().getDrawable(this.context.getResources().getIdentifier(child[i][0].toString(), "drawable", this.context.getPackageName())));
e.setLayoutParams(exampleParams);
if(child[i][4] == "alpha_in") {
Animation animate = AnimationUtils.loadAnimation(this.context, R.anim.alpha_in);
e.startAnimation(animate);
} else if(child[i][4] == "left_to_right") {
Animation animate = AnimationUtils.loadAnimation(this.context, R.anim.left_to_right);
e.startAnimation(animate);
} else if(child[i][4] == "right_to_left") {
Animation animate = AnimationUtils.loadAnimation(this.context, R.anim.right_to_left);
e.startAnimation(animate);
}
this.elements.add(e);
pView.addView(e);
}
}
Wäre das super, wenn mir da jemand weiterhelfen könnte.
Grüße.