使用网格视图的Android动画:从缩略图缩放到全尺寸图像

时间:2012-09-03 02:43:13

标签: android android-animation

我目前有GridView填充缩略图。现在通常我会通过onClickListener在“详细信息”活动中加载这些缩略图的完整版本。

但是我试图复制效果,如果我点击一个缩略图,它应该向上扩展以显示全尺寸图像,当你点击全尺寸图像时,它应该缩小到缩略图。我已经尝试了一个简单的比例动画,但似乎无法让我的头脑在动画图像(并返回)它的初始位置。

注意:如果有人有HTC One X,我追逐的效果就像手机上的Gallery应用程序一样。点击图像时,Jellybean驱动的Nexus 7也具有相同的效果。

我最近的尝试是(点击onClick):

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fromXScale="1.0"
    android:toXScale="1.0"
    android:fromYScale="0.0"
    android:toYScale="1.0"
    android:pivotY="50%"
    android:fillAfter="true"
    android:fillEnabled="true"
    android:startOffset="200"
    android:duration="200" />

更新:尝试查看Google的Gallery3D应用的来源(http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android- apps / 4.1.1_r1 / com / android / gallery3d / app),这是Nexus使用的那个,但它非常复杂。

1 个答案:

答案 0 :(得分:1)

Here是DevBytes中类似效果的一个很好的例子。它使用ActivityOptions中的新API,可以直接从JellyBean获得,也可以通过support-v4库访问

从该示例中截取的代码位于:

Intent i = new Intent(HomeActivity.this, DetailActivity.class);
i.putExtra(DetailActivity.EXTRA_COLOUR, colour);
Bundle b = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
    bitmap.eraseColor(colour);
    b = ActivityOptions.makeThumbnailScaleUpAnimation(view, bitmap, 0, 0).toBundle();
}
startActivity(i, b);