2016-07-05 9 views
-1

kann ich dieandroid belebte Breite und Höhe RelativeLayout

Koordinaten x und y von RelativeLayout

während ich ihre Animieren von

MATCH_PARENT

WARP_CONTENT

also möchte ich nur die x und y für animieren a nother view in it weil ich viele RelativeLayout als childeren habe und wenn ich die Eltern von MATCH_PARENT zu WARP_CONTENT die Position des Kindes ändere und mabye aus dem Bildschirm sein, so denke ich über nehmen Sie das x und y der Eltern während animieren und minus das Kind

Antwort

0

Was

RelativeLayout mlayout = findViewById(R.id.yourID); 

float x = mlayout.getX(); 
float y = mlayout.getY(); 

Position bearbeiten dieses make Kind in derselben Position, wenn Eltern MATCH_PARENT oder WARO_CONTENT sein: von Resizing layouts programmatically (as animation)

Sie müssen also die endgültige Höhe und Breite, ma Sie können es unsichtbar machen, zu WRAP_CONTENT wechseln, neue Höhe und Breite messen, zurück ändern, sichtbar machen und die Größe mit Code oben auf neue Höhe und Breite animieren. Ich kenne leider keinen besseren Weg.

Dann animieren Breite:

Instantiate ResizeAnimation

ResizeAnimation resizeAnimation = new ResizeAnimation(
    view, 
    targetHeight, 
    startHeight, 
    targetWidth, 
    startWidth 
); 
resizeAnimation.setDuration(duration); 
view.startAnimation(resizeAnimation); 

ResizeAnimation Klasse wie dieses

public class ResizeAnimation extends Animation { 
    final int targetHeight; 
    final int targetWidth; 
    View view; 
    int startHeight; 
    int startWidth; 

    public ResizeAnimation(View view, int targetHeight, int startHeight, targetWidth, int startWidth) { 
     this.view = view; 
     this.targetHeight = targetHeight; 
     this.startHeight = startHeight; 
     this.targetWidth = targetWidth; 
     this.startWidth = startWidth; 
    } 

    @Override 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 
     int newHeight = (int) (startHeight + targetHeight * interpolatedTime); 
     int newWidth= (int) (startWidth + targetWidth * interpolatedTime); 

     view.getLayoutParams().height = newHeight; 
     view.getLayoutParams().width = newWidth; 
     view.requestLayout(); 
    } 

    @Override 
    public void initialize(int width, int height, int parentWidth, int parentHeight) { 
     super.initialize(width, height, parentWidth, parentHeight); 
    } 

    @Override 
    public boolean willChangeBounds() { 
     return true; 
    } 
} 
+0

ok aussehen sollte, aber wie kann ich animieren thats Höhe und Breite von 'MATCH_PARENT' zu' INHALT_WARP' – medo