我正致力于为不同的布局设置动画片,以模拟足球的形成。
例如。这是配置1:
===============================
1 2 3 4
===============================
5 6 7
===============================
8 9 10
===============================
上面的数字是各个水平LinearLayouts内的图像视图。我想要切换到配置2(在最顶层的LinearLayout中包含5个数字,在中间布局中包含2个。下限不变。)
===============================
1 2 3 4 5
===============================
6 7
===============================
8 9 10
===============================
现在,到目前为止,我能够在线性布局中动态添加和删除imageView。然而,过渡似乎非常突然。所以我想知道是否可以使用动画来显示:
需要注意的是,由于Number 5不再是mid布局的成员,因此可以显示它的转换。
编辑:上面的配置更改只是一个代表性的例子。实际上,可以存在多种形式,并且可以从任何一种形成过渡到任何其他形式。该解决方案也必须是“流动的”并且不依赖于硬编码的像素值。到目前为止,由于删除或添加,我可以处理重新排列部分(当然没有动画)。
答案 0 :(得分:0)
要解决您的问题,我将使用翻译动画。
以下是如何操作的示例。
SELECT
p.title AS package_title,
tbl_min_value.min_price AS min_price
FROM
(SELECT
fixture_id,
MIN(deal_price) AS min_price
FROM
fixtures_deal
GROUP BY fixture_id) AS tbl_min_value
JOIN fixtures AS f
ON f.id = tbl_min_value.fixture_id
RIGHT JOIN packages AS p
ON f.package_id = p.id
GROUP BY p.id
您可以使用RelativeLayout relativeLayout = new RelativeLayout(this);
relativeLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
setContentView(relativeLayout);
final ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.ic_your_icon);
relativeLayout.addView(imageView);
final float amountToMoveRight = imageView.getX() + 100;
final float amountToMoveDown = imageView.getY() + 100;
TranslateAnimation anim = new TranslateAnimation(imageView.getX(), imageView.getX() + 100, imageView.getY(), imageView.getY() + 100);
anim.setDuration(2000);
anim.setAnimationListener(new TranslateAnimation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) imageView.getLayoutParams();
params.topMargin += amountToMoveDown;
params.leftMargin += amountToMoveRight;
imageView.setLayoutParams(params);
}
});
imageView.startAnimation(anim);
和imageView.getX();