0

伙计们,我需要你的帮助,我是新的应用程序开发和堆栈溢出。我需要让动画向下拖动一个按钮或其他东西,并在它之后带来一个新的活动。注意:我不能在这里放一张图片,但我可以尝试用字符来明确我的要求。

  |______V______| --> button or image

         |
         | --> dragging down
         v

向下拖动(按钮或图像)导致新活动从上到下。任何帮助链接或建议将不胜感激?

4

1 回答 1

0

这样做

import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class ActivityLogin extends Activity {

    private boolean isUp;

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

        ((Button) findViewById(R.id.button1))
                .setOnClickListener(new OnClickListener() {

                    public void onClick(final View v) {

                        final float direction = (isUp) ? -1 : 1;
                        final float yDelta = getScreenHeight()
                                - (2 * v.getHeight());
                        final int layoutTopOrBottomRule = (isUp) ? RelativeLayout.ALIGN_PARENT_TOP
                                : RelativeLayout.ALIGN_PARENT_BOTTOM;

                        final Animation animation = new TranslateAnimation(0,
                                0, 0, yDelta * direction);

                        animation.setDuration(500);

                        animation.setAnimationListener(new AnimationListener() {

                            public void onAnimationStart(Animation animation) {
                            }

                            public void onAnimationRepeat(Animation animation) {
                            }

                            public void onAnimationEnd(Animation animation) {

                                // fix flicking
                                // Source :
                                // http://stackoverflow.com/questions/9387711/android-animation-flicker
                                TranslateAnimation anim = new TranslateAnimation(
                                        0.0f, 0.0f, 0.0f, 0.0f);
                                anim.setDuration(2);
                                v.startAnimation(anim);

//                              // set new params
//                              LayoutParams params = new LayoutParams(v
//                                      .getLayoutParams());
//                              params.addRule(RelativeLayout.CENTER_HORIZONTAL);
//                              params.addRule(layoutTopOrBottomRule);
//                              v.setLayoutParams(params);



                                Toast.makeText(getApplicationContext(), "Open New Activity here", 1).show();
                            }
                        });

                        v.startAnimation(animation);

                        // reverse direction
                        isUp = !isUp;
                    }
                });
    }

    private float getScreenHeight() {

        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        return (float) displaymetrics.heightPixels;

    }
}

和你的 activity_main.xml

<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/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Drag Me" />


</RelativeLayout>

现在我在哪里显示了 Toast 消息,你需要在那里显示你的下一个活动。

于 2013-10-27T10:50:15.660 回答