无需完成即可将信号发送到上一个活

时间:2014-12-10 23:11:29

标签: android animation transition

前台活动有没有办法在不完成前台活动的情况下向前一个活动发送一些信号(如回调)?

我正在自己实施活动过渡。用户单击活动A上的一个图像后,将使用图像的位图,位置和尺寸启动活动B. A中的原始图像被隐藏,活动B使用位图在精确大小的确切位置激活imageview。所以看来A的图像移动了。简单。

但问题是,从A隐藏图像和在B处开始绘制图像之间存在非常小的时间间隔,因此存在一些闪烁。虽然我目前在100分钟后隐藏了A的图像,但我并不认为这是一个很好的解决方案。

为了正确隐藏原始图像,活动B是否可以在动画开始之前通知活动A?

1 个答案:

答案 0 :(得分:0)

简单,不要为此使用不同的活动。而是使用动画。 这是翻译和缩放ImageView的简单示例:

MainActivity.java:

public class MainActivity extends ActionBarActivity {
    private ImageView ivImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ivImage = (ImageView) findViewById(R.id.ivImage);
        ivImage.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.background));
        ivImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                animate();
            }
        });
    }

    private void animate() {
        Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.bitmap_movement);
        ivImage.startAnimation(animation);
    }

}

bitmap_movement.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fillAfter="true"
    android:fillEnabled="true">
    <scale
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="0.5"
        android:toYScale="0.5" />

    <translate
        android:fromXDelta="0"
        android:toXDelta="240" />
</set>

布局main_activity.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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/ivImage"
        android:layout_width="40dp"
        android:layout_height="40dp" />

</RelativeLayout>