web-dev-qa-db-de.com

Schieben Sie ein Layout vom unteren Bildschirmrand nach oben

Ich habe ein Layout für die Ansicht ausgeblendet. Klicken Sie auf eine Schaltfläche. Ich möchte, dass sie von unten nach oben verschoben wird, indem Sie den gesamten Bildschirminhalt nach oben verschieben. Dies ähnelt der Anzeige von WhatsApp-Emoticons im Chat-Bildschirm. 

Ich habe SlidingDrawer gesehen, das für mich nicht funktionierte. Es erfordert ein Bild als Griff, das in der Mitte des Bildschirms angezeigt wird. Das möchte ich nicht. Es gleitet auch über den vorhandenen Bildschirminhalt. Ich suche nach einer Möglichkeit, den vorhandenen Inhalt nach oben zu verschieben.

Update 1:

Ich habe versucht, die von Sanket Kachhela vorgeschlagenen Animationen zu verwenden. Das verborgene Layout wird jedoch nie angezeigt. Hier ist der Code.

Layout (activity_main.xml):

<RelativeLayout
    Android:id="@+id/main_screen"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/hello_world" 
        Android:layout_alignParentTop="true"/>

     <TextView
       Android:layout_width="wrap_content"
       Android:layout_height="wrap_content"
       Android:text="@string/hello_world" 
       Android:layout_centerInParent="true"/>

    <Button
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Slide up / down"
        Android:layout_alignParentBottom="true" 
        Android:onClick="slideUpDown"/>

</RelativeLayout>

<RelativeLayout
    Android:id="@+id/hidden_panel"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content" 
    Android:layout_below="@id/main_screen">

    <Button
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/app_name" />

</RelativeLayout>

Aktivität (MainActivity.Java):

package com.example.slideuplayout;

import Android.app.Activity;
import Android.os.Bundle;
import Android.view.Menu;
import Android.view.View;
import Android.view.ViewGroup;
import Android.view.animation.Animation;
import Android.view.animation.AnimationUtils;

public class MainActivity extends Activity {

private ViewGroup hiddenPanel;
private boolean isPanelShown;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    hiddenPanel = (ViewGroup)findViewById(R.id.hidden_panel);
    hiddenPanel.setVisibility(View.INVISIBLE);
    isPanelShown = false;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void slideUpDown(final View view) {
    if(!isPanelShown) {
        // Show the panel
        Animation bottomUp = AnimationUtils.loadAnimation(this,
                R.anim.bottom_up);

        hiddenPanel.startAnimation(bottomUp);
        hiddenPanel.setVisibility(View.VISIBLE);
        isPanelShown = true;
    }
    else {
        // Hide the Panel
        Animation bottomDown = AnimationUtils.loadAnimation(this,
                R.anim.bottom_down);

        hiddenPanel.startAnimation(bottomDown);
        hiddenPanel.setVisibility(View.INVISIBLE);
        isPanelShown = false;
    }
}

}

Animationen:

bottom_up.xml:

<?xml version="1.0" encoding="utf-8"?>
 <set xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <translate 
       Android:fromYDelta="75%p"
       Android:toYDelta="0%p"
       Android:fillAfter="true"
       Android:duration="500" />
</set>

bottom_down.xml:

<?xml version="1.0" encoding="utf-8"?>
 <set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<translate 
    Android:fromYDelta="0%p" 
    Android:toYDelta="100%p" 
    Android:fillAfter="true"
    Android:interpolator="@Android:anim/linear_interpolator"
    Android:duration="500" />
</set>

Irgendwelche Ideen, wie das gemacht werden kann?

Vielen Dank.

81
Babar

Verwenden Sie diese Animationen:

bottom_up.xml

<?xml version="1.0" encoding="utf-8"?>
 <set xmlns:Android="http://schemas.Android.com/apk/res/Android">
   <translate Android:fromYDelta="75%p" Android:toYDelta="0%p" 
    Android:fillAfter="true"
 Android:duration="500"/>
</set>

bottom_down.xml

 <?xml version="1.0" encoding="utf-8"?>
 <set xmlns:Android="http://schemas.Android.com/apk/res/Android">

<translate Android:fromYDelta="0%p" Android:toYDelta="100%p" Android:fillAfter="true"
            Android:interpolator="@Android:anim/linear_interpolator"
    Android:duration="500" />

</set>

Verwenden Sie diesen Code in Ihrer Aktivität zum Ausblenden/Animieren Ihrer Ansicht:

Animation bottomUp = AnimationUtils.loadAnimation(getContext(),
            R.anim.bottom_up);
ViewGroup hiddenPanel = (ViewGroup)findViewById(R.id.hidden_panel);
hiddenPanel.startAnimation(bottomUp);
hiddenPanel.setVisibility(View.VISIBLE);
135
Sanket Kachhela

Du warst nah. Der Schlüssel ist, das versteckte Layout in Höhe und Gewicht auf match_parent aufzublasen. Starten Sie es einfach als View.GONE. Auf diese Weise funktioniert die Verwendung des Prozentsatzes in den Animatoren ordnungsgemäß.

Layout (activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/main_screen"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:text="@string/hello_world" />

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true"
        Android:text="@string/hello_world" />

    <Button
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:onClick="slideUpDown"
        Android:text="Slide up / down" />

    <RelativeLayout
        Android:id="@+id/hidden_panel"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@Android:color/white"
        Android:visibility="gone" >

        <Button
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="@string/app_name"
            Android:layout_centerInParent="true"
            Android:onClick="slideUpDown" />
    </RelativeLayout>

</RelativeLayout>

Aktivität (MainActivity.Java):

import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.ViewGroup;
import Android.view.animation.Animation;
import Android.view.animation.AnimationUtils;

public class OffscreenActivity extends Activity {
    private View hiddenPanel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

        hiddenPanel = findViewById(R.id.hidden_panel);
    }

    public void slideUpDown(final View view) {
        if (!isPanelShown()) {
            // Show the panel
            Animation bottomUp = AnimationUtils.loadAnimation(this,
                    R.anim.bottom_up);

            hiddenPanel.startAnimation(bottomUp);
            hiddenPanel.setVisibility(View.VISIBLE);
        }
        else {
            // Hide the Panel
            Animation bottomDown = AnimationUtils.loadAnimation(this,
                    R.anim.bottom_down);

            hiddenPanel.startAnimation(bottomDown);
            hiddenPanel.setVisibility(View.GONE);
        }
    }

    private boolean isPanelShown() {
        return hiddenPanel.getVisibility() == View.VISIBLE;
    }

}

Das einzige, was ich geändert habe, war bottom_up.xml. Anstatt

Android:fromYDelta="75%p"

Ich benutzte:

Android:fromYDelta="100%p"

Aber das ist eine Frage der Präferenz, nehme ich an.

41
Paul Burke

Sie müssen nur ein paar Zeilen in Ihre App einfügen.

Anzeigen und Ausblenden einer Ansicht mit einer Slide-Animation nach oben/unten

Fügen Sie einfach eine Animation zu Ihrem Layout hinzu:

mLayoutTab.animate()
  .translationYBy(120)
  .translationY(0)
  .setDuration(getResources().getInteger(Android.R.integer.config_mediumAnimTime));
7

Hier ist, was am Ende für mich gearbeitet hat.

Layouts:

activity_main.xml

<RelativeLayout
    Android:id="@+id/main_screen"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" 
    Android:layout_alignParentTop="true"
    Android:layout_alignParentBottom="true">

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/hello_world" 
        Android:layout_alignParentTop="true"/>

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/hello_world"
        Android:layout_centerInParent="true" />

    <Button
        Android:id="@+id/slideButton"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Slide up / down"
        Android:layout_alignParentBottom="true" 
        Android:onClick="slideUpDown"/>

</RelativeLayout>

hidden_panel.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/hidden_panel"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical" >
    <Button
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="Test" />
</LinearLayout>

Java: Paket com.example.slideuplayout;

import Android.app.Activity;
import Android.os.Bundle;
import Android.view.Menu;
import Android.view.View;
import Android.view.ViewGroup;
import Android.view.ViewTreeObserver;
import Android.view.ViewTreeObserver.OnGlobalLayoutListener;
import Android.view.animation.Animation;
import Android.view.animation.Animation.AnimationListener;
import Android.view.animation.AnimationUtils;

public class MainActivity extends Activity {

private ViewGroup hiddenPanel;
private ViewGroup mainScreen;
private boolean isPanelShown;
private ViewGroup root;

int screenHeight = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mainScreen = (ViewGroup)findViewById(R.id.main_screen);
    ViewTreeObserver vto = mainScreen.getViewTreeObserver(); 
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
        @Override 
        public void onGlobalLayout() { 
            screenHeight = mainScreen.getHeight();
            mainScreen.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
        } 
    }); 

    root = (ViewGroup)findViewById(R.id.root);

    hiddenPanel = (ViewGroup)getLayoutInflater().inflate(R.layout.hidden_panel, root, false);
    hiddenPanel.setVisibility(View.INVISIBLE);

    root.addView(hiddenPanel);

    isPanelShown = false;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void slideUpDown(final View view) {
    if(!isPanelShown) {
        // Show the panel
        mainScreen.layout(mainScreen.getLeft(),
                          mainScreen.getTop() - (screenHeight * 25/100), 
                          mainScreen.getRight(),
                          mainScreen.getBottom() - (screenHeight * 25/100));



        hiddenPanel.layout(mainScreen.getLeft(), mainScreen.getBottom(), mainScreen.getRight(), screenHeight);
        hiddenPanel.setVisibility(View.VISIBLE);

        Animation bottomUp = AnimationUtils.loadAnimation(this,
                R.anim.bottom_up);

        hiddenPanel.startAnimation(bottomUp);

        isPanelShown = true;
    }
    else {
        isPanelShown = false;

        // Hide the Panel
        Animation bottomDown = AnimationUtils.loadAnimation(this,
                R.anim.bottom_down);
        bottomDown.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationRepeat(Animation arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation arg0) {
                isPanelShown = false;

                mainScreen.layout(mainScreen.getLeft(),
                          mainScreen.getTop() + (screenHeight * 25/100), 
                          mainScreen.getRight(),
                          mainScreen.getBottom() + (screenHeight * 25/100));

                hiddenPanel.layout(mainScreen.getLeft(), mainScreen.getBottom(), mainScreen.getRight(), screenHeight);
            }
        });
        hiddenPanel.startAnimation(bottomDown);
    }
}
}
6
Babar

Verwenden Sie dieses Layout. Wenn Sie die verkleinerte Hauptansicht animieren möchten, müssen Sie der Höhe der ausgeblendeten Leiste eine Animation hinzufügen. Wenn Sie sie kaufen möchten, reicht es aus, die Übersetzungsanimation auf der Leiste zu verwenden, und die Hauptansicht springt statt animiert.

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >

<RelativeLayout
    Android:id="@+id/main_screen"
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    Android:layout_weight="1" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:text="@string/hello_world" />

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true"
        Android:text="@string/hello_world" />

    <Button
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:onClick="slideUpDown"
        Android:text="Slide up / down" />
</RelativeLayout>

<RelativeLayout
    Android:id="@+id/hidden_panel"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_gravity="bottom"
    Android:background="#fcc"
    Android:visibility="visible" >

    <Button
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/app_name" />
</RelativeLayout>

</LinearLayout>
4
yoah

Ok, es gibt zwei mögliche Ansätze. Am einfachsten ist es, ein Sliding Menu Library zu verwenden. Es ermöglicht das Erstellen eines unteren verschiebbaren Menüs, es kann den oberen Container animieren, um das untere sichtbar zu machen. Es unterstützt sowohl das Ziehen mit dem Finger als auch das animierte Animieren über den Button (StaticDrawer).

Schwieriger - wenn Sie Animationen verwenden möchten, wie bereits vorgeschlagen. Bei Animationen müssen Sie ZUERST Ihre Layouts ändern. Versuchen Sie daher zuerst, Ihr Layout ohne Animationen in den endgültigen Zustand zu bringen. Da es sehr wahrscheinlich ist, dass Sie Ihre Ansichten in RelativeLayout nicht richtig auslegen, bleibt die obere Ansicht auch dann, wenn Sie Ihre Ansicht von unten zeigen. Sobald Sie die richtige Layoutänderung vorgenommen haben, müssen Sie sich die Übersetzungen vor dem Layout merken und die Übersetzungsanimation NACH dem Layout anwenden.

3
EvilDuck

Probieren Sie den folgenden Code aus. Es ist sehr kurz und einfach. 

transalate_anim.xml

<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2013 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.Apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <translate
        Android:duration="4000"
        Android:fromXDelta="0"
        Android:fromYDelta="0"
        Android:repeatCount="infinite"
        Android:toXDelta="0"
        Android:toYDelta="-90%p" />

    <alpha xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:duration="4000"
        Android:fromAlpha="0.0"
        Android:repeatCount="infinite"
        Android:toAlpha="1.0" />
</set>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context="com.naveen.congratulations.MainActivity">


    <ImageView
        Android:id="@+id/image_1"
        Android:layout_width="50dp"
        Android:layout_height="50dp"
        Android:layout_marginBottom="8dp"
        Android:layout_marginStart="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:srcCompat="@drawable/balloons" />
</Android.support.constraint.ConstraintLayout>

MainActivity.Java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ImageView imageView1 = (ImageView) findViewById(R.id.image_1);
        imageView1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startBottomToTopAnimation(imageView1);
            }
        });

    }

    private void startBottomToTopAnimation(View view) {
        view.startAnimation(AnimationUtils.loadAnimation(this, R.anim.translate_anim));
    }
}

 bottom_up_navigation of image

2
Naveen Kumar M

Mein Code zum Animieren der Animation nach oben, ohne XML nach unten

private static ObjectAnimator createBottomUpAnimation(View view,
        AnimatorListenerAdapter listener, float distance) {
    ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationY", -distance);
//        animator.setDuration(???)
    animator.removeAllListeners();
    if (listener != null) {
        animator.addListener(listener);
    }
    return animator;
}

public static ObjectAnimator createTopDownAnimation(View view, AnimatorListenerAdapter listener,
        float distance) {
    view.setTranslationY(-distance);
    ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationY", 0);
    animator.removeAllListeners();
    if (listener != null) {
        animator.addListener(listener);
    }
    return animator;
}

Mit Zum Herunterrutschen

createTopDownAnimation(myYellowView, null, myYellowView.getHeight()).start();

Für hochschieben 

createBottomUpAnimation(myYellowView, null, myYellowView.getHeight()).start();

 enter image description here

1
Linh

Hier ist eine Lösung als Erweiterung von [ https://stackoverflow.com/a/46644736/10249774]

Im unteren Bereich wird der Hauptinhalt nach oben gedrückt 

https://imgur.com/a/6nxewE0

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
    Android:id="@+id/my_button"
    Android:layout_marginTop="10dp"
    Android:onClick="onSlideViewButtonClick"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"/>
<LinearLayout
Android:id="@+id/main_view"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:gravity="center_horizontal">
<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="main "
    Android:textSize="70dp"/>
<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="main "
    Android:textSize="70dp"/>
<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="main "
    Android:textSize="70dp"/>
<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="main"
    Android:textSize="70dp"/>
<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="main"
    Android:textSize="70dp"/>
</LinearLayout>
<LinearLayout
    Android:id="@+id/footer_view"
    Android:background="#a6e1aa"
    Android:orientation="vertical"
    Android:gravity="center_horizontal"
    Android:layout_alignParentBottom="true"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">
    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="footer content"
        Android:textSize="40dp" />
    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="footer content"
        Android:textSize="40dp" />
  </LinearLayout>
</RelativeLayout>

Hauptaktivität:

import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.view.View;
import Android.view.animation.TranslateAnimation;
import Android.widget.Button;

public class MainActivity extends AppCompatActivity {
private Button myButton;
private View footerView;
private View mainView;
private boolean isUp;
private int anim_duration = 700;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    footerView = findViewById(R.id.footer_view);
    mainView = findViewById(R.id.main_view);
    myButton = findViewById(R.id.my_button);

    // initialize as invisible (could also do in xml)
    footerView.setVisibility(View.INVISIBLE);
    myButton.setText("Slide up");
    isUp = false;
}
public void slideUp(View mainView , View footer_view){
    footer_view.setVisibility(View.VISIBLE);
    TranslateAnimation animate_footer = new TranslateAnimation(
            0,                 // fromXDelta
            0,                 // toXDelta
            footer_view.getHeight(),  // fromYDelta
            0);                // toYDelta
    animate_footer.setDuration(anim_duration);
    animate_footer.setFillAfter(true);
    footer_view.startAnimation(animate_footer);

    mainView.setVisibility(View.VISIBLE);
    TranslateAnimation animate_main = new TranslateAnimation(
            0,                 // fromXDelta
            0,                 // toXDelta
            0,  // fromYDelta
            (0-footer_view.getHeight()));                // toYDelta
    animate_main.setDuration(anim_duration);
    animate_main.setFillAfter(true);
    mainView.startAnimation(animate_main);
}
public void slideDown(View mainView , View footer_view){
    TranslateAnimation animate_footer = new TranslateAnimation(
            0,                 // fromXDelta
            0,                 // toXDelta
            0,                 // fromYDelta
            footer_view.getHeight()); // toYDelta
    animate_footer.setDuration(anim_duration);
    animate_footer.setFillAfter(true);
    footer_view.startAnimation(animate_footer);


    TranslateAnimation animate_main = new TranslateAnimation(
            0,                 // fromXDelta
            0,                 // toXDelta
            (0-footer_view.getHeight()),  // fromYDelta
            0);                // toYDelta
    animate_main.setDuration(anim_duration);
    animate_main.setFillAfter(true);
    mainView.startAnimation(animate_main);
}

public void onSlideViewButtonClick(View view) {
    if (isUp) {
        slideDown(mainView , footerView);
        myButton.setText("Slide up");
    } else {
        slideUp(mainView , footerView);
        myButton.setText("Slide down");
    }
    isUp = !isUp;
}
}
0
Drasko

Sie können den Hauptbildschirm und den anderen Bildschirm, den Sie nach oben scrollen möchten, als Fragmente definieren. Wenn die Taste auf dem Hauptbildschirm gedrückt wird, sendet das Fragment eine Nachricht an die Aktivität, die dann den Hauptbildschirm durch denjenigen ersetzt, den Sie nach oben scrollen möchten, und den Ersatz animieren.

0
superuser