我几天都遇到了问题,我几乎找不到有人说类似的东西。实际上,即使阅读了很长的书籍和文章,我也很困惑,所以也许我只想用火箭筒杀死一只蚊子:-),但我找不到任何解决办法。
这是我想在最后获得的:
我有一个图标列表,例如在laucher中,假设处理成2行-16列矩阵。当我按下其中一个图标时,动画应该开始将按下的图标缩放到全屏。实际上不需要在动画期间维护图标图形,它甚至可以是从图标大小扩展到全屏的框。
我试着把这样的图标放在那里(这只是一个2x4矩阵,应该看看问题)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:paddingTop="50dp">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scrollView">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_gravity="center_horizontal"
android:gravity="center_horizontal" android:layout_margin="5dp">
<package.libraries.BoxX
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/boxX"
android:src="@drawable/icon1"
android:focusableInTouchMode="false" android:layout_weight="1" android:layout_gravity="center"
android:clickable="false" android:longClickable="false"
android:layout_alignParentLeft="false" android:layout_alignWithParentIfMissing="false"
android:layout_margin="10dp"/>
<package.libraries.BoxX
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/boxX2"
android:src="@drawable/icon2"
android:focusableInTouchMode="false" android:layout_gravity="center" android:layout_weight="1"
android:longClickable="false" android:layout_alignParentRight="false"
android:layout_alignParentBottom="false" android:layout_alignParentLeft="false"
android:layout_alignParentTop="false"
android:adjustViewBounds="false" android:layout_toRightOf="@+id/boxX"
android:baselineAlignBottom="false"
android:layout_margin="10dp"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_gravity="center_horizontal"
android:gravity="center_horizontal" android:layout_margin="5dp">
<view android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="package.libraries.BoxX" android:id="@+id/boxX3" android:src="@drawable/icon3"
android:layout_margin="10dp"/>
<view android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="package.libraries.BoxX" android:id="@+id/BoxX4" android:focusableInTouchMode="false"
android:src="@drawable/icon4" android:layout_toRightOf="@+id/boxX3" android:layout_margin="10dp"/>
</RelativeLayout>
</LinearLayout>
</ScrollView>
其中package.libraries.BoxX是我的自定义视图,它扩展了ImageView并运行动画。这就是我创建和运行动画的方式:
@Override
public void onClick(View view) {
XxFlipAnimator animator = new XxFlipAnimator(BoxX.this, strDrw, endDrw,
BoxX.this.getWidth() / 2, BoxX.this.getHeight() / 2, true);
animator.setFillAfter(true);
animator.setFillEnabled(true);
animator.setDuration(500);
BoxX.this.startAnimation(animator);
mStatus = status.CLICKED;
}
XxFlipAnimator是我的动画类,派生自this,具有此ApplyTrasformation方法:
protected void applyTransformation(float interpolatedTime, Transformation t) {
final Matrix matrix = t.getMatrix();
camera.save();
camera.translate(0.0f, 0.0f, (float) (1100.0 * (0.5f - interpolatedTime)));
if ((interpolatedTime < 0.5f) || !(zoom))
camera.rotateY(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
使用z轴获得缩放,这是第一个问题:这是对的吗?如果这是使图标“增长”的正确方法,这是真正的z轴范围?我只是通过实验找到了常数1100,但我更愿意有一些规格。
顺便提一下,真正的问题是:当我按下图标时,动画开始很好,图标尺寸开始增长,但是当它们到达父亲相对布局时,它们会夹紧。不是与相对布局相关的东西,因为我试图将其更改为线性并且结果是相同的...所以关键是:是否可以让动画超出动画视图的父布局的维度?
非常感谢任何有帮助的人,
克里斯蒂