2016-07-14 6 views
2

Mein Linear-Layout nimmt etwa die Hälfte Bildschirmbreiteandroid: Wie kann ich Animation von einem bestimmten Punkt

beginne ich diesen Code verwenden

zum Übersetzen
<translate 
    android:duration="2000" 
    android:fromXDelta="100%" 
    android:toXDelta="0" 
    android:interpolator="@android:anim/decelerate_interpolator" 
    xmlns:android="http://schemas.android.com/apk/res/android"/> 

Aber mein Problem ist das lineare Layout übersetzt aus dem Ende des Bildschirms, wo ich ein anderes Bild am Ende haben, so will ich nicht, um das Layout mit diesem Bild zu überlappen, während

animieren so will ich es von der linken Seite des Bildes der Übersetzung beginnen

<LinearLayout 
       android:id="@+id/row" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@android:color/transparent" 
       android:orientation="horizontal" 
       android:clipToPadding="false" 
       android:padding="3dp" 


       android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true"> 
       <LinearLayout 
        android:id="@+id/items" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:visibility="invisible" 
        android:background="@android:color/transparent" 
        android:orientation="horizontal" 
        android:padding="3dp"> 
       <ImageButton 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:background="@android:color/transparent" 

        android:paddingBottom="5dp" 
        android:paddingLeft="16dp" 
        android:paddingRight="16dp" 
        android:paddingTop="5dp" 
        android:src="@drawable/search" 
        android:text="Android Custom Horizontal Dropdown Menu Icons" /> 

       <ImageButton 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_marginLeft="2dp" 
        android:background="@android:color/transparent" 

        android:paddingBottom="5dp" 
        android:paddingLeft="16dp" 
        android:paddingRight="16dp" 
        android:paddingTop="5dp" 
        android:src="@drawable/search" 
        android:text="Android Custom Horizontal Dropdown Menu Icons" /> 

       <ImageButton 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_marginLeft="2dp" 
        android:background="@android:color/transparent" 

        android:paddingBottom="5dp" 
        android:paddingLeft="16dp" 
        android:paddingRight="16dp" 
        android:paddingTop="5dp" 
        android:src="@drawable/search" 
        android:text="Android Custom Horizontal Dropdown Menu Icons" /> 

       <ImageButton 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_marginLeft="2dp" 
        android:background="@android:color/transparent" 

        android:paddingBottom="5dp" 
        android:paddingLeft="16dp" 
        android:paddingRight="16dp" 
        android:paddingTop="5dp" 
        android:src="@drawable/search" 
        android:text="Android Custom Horizontal Dropdown Menu Icons" /> 
</LinearLayout> 
       <ImageButton 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent" 
        android:layout_marginLeft="2dp" 
        android:background="@android:color/transparent" 
android:id="@+id/widget" 
        android:paddingBottom="5dp" 
        android:paddingLeft="16dp" 
        android:paddingRight="16dp" 
        android:paddingTop="5dp" 
        android:src="@drawable/three" 
        android:layout_marginBottom="30dp" 
        android:text="Android Custom Horizontal Dropdown Menu Icons" /> 

      </LinearLayout> 

     </RelativeLayout> 

I want to animate the Linear Layout with id items 

Antwort

1

Sie können das einfach in Java-Code mittun:

LinearLayout ll = (LinearLayout) findViewById(R.id.row); 
ll.animate().translationX(toX).setDuration(2000).setInterpolator(new DecelerateInterpolator()); 

wobei (toX) der Schwimmer-Wert ist, wo das Linearlayout auf der X-Achse des Bildschirms bewegen wird. Es wird immer von der aktuellen Position aus beginnen.

Eine Alternative ist die Methode:

ll.animate().translationXBy(byX); 

die die Linearlayout BY belebt die (BYX) -Wert.

Überprüfen Sie die docs für alle verfügbaren Methoden, können Sie alle Arten von Animationen mit ViewPropertyAnimator.

2

Dies sind die folgenden Übersetzungen ..

Verschieben von oben nach unten

android:fromYDelta="-75%p" 
    android:toYDelta="0%p" 

Verschieben von unten nach oben ....

android:fromYDelta="75%p" 
    android:toYDelta="0%p" 

Verschieben von rechts

android:fromXDelta="75%p" 
    android:toXDelta="0%p" 

versuchen, diese nach links ......... links nach rechts ........

<translate 
    android:duration="2000" 
    android:fillAfter="true" 
    android:fromXDelta="-75%p" 
    android:toXDelta="0%p" 
    android:interpolator="@android:anim/decelerate_interpolator" 
    xmlns:android="http://schemas.android.com/apk/res/android"/> 

enjoy coding ...

+0

Dies ist für rechts spiegeln animation ... Was ich tat, war links – MrRobot9

+0

Sie wollten top to botton ?? (bedeutet oben auf aktuelle Position) – sushildlh

+0

Eigentlich wollte ich es von der Mitte des Bildschirms starten, nicht vom Ende des Bildschirms, nur von links nach rechts – MrRobot9

Verwandte Themen