gpt4 book ai didi

android - 如何在此动画后休息/初始状态 View ?

转载 作者:行者123 更新时间:2023-11-30 01:46:46 27 4
gpt4 key购买 nike

正如标题所说,我需要将 TextViewImageView 和其他 View 重置为初始状态。例如,在触摸该特定 View 后,会播放一个动画,并且它的动画会(视觉上)销毁该 View 。

现在我需要重新绘制它。希望你明白了。我还使用了 https://github.com/tyrantgit/ExplosionField 中的 ExplosionField 效果.我已经运行了代码,它正在运行。

代码如下:

private ExplosionField mExplosionField;
private TextView tv_1;

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

tv_1 = (TextView)findViewById(R.id.mytext_xml);
mExplosionField = ExplosionField.attach2Window(this);
addListener(findViewById(R.id.root));

}

private void addListener(View root) {
// TODO Auto-generated method stub
if (root instanceof ViewGroup) {
ViewGroup parent = (ViewGroup) root;
for (int i = 0; i < parent.getChildCount(); i++) {
addListener(parent.getChildAt(i));
}
} else {
root.setClickable(true);
root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mExplosionField.explode(v);
v.setOnClickListener(null);
}
});
}
}

现在,通过按下“action_reset”,它必须从头开始绘制 TextView。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_reset) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

我知道所需的代码在 “if (id == R.id.action_reset)” 之后,但我已经尝试了几种通过互联网找到的方法,但没有一种有效.

enter image description here

注意:请去https://github.com/tyrantgit/ExplosionField并考虑这个例子。我需要知道如何通过按下按钮再次重绘。

最佳答案

我仍然对您所说的destroy that view 的意思感到困惑。重置 View 取决于您所做的更改。取决于您需要撤消更改。如果您已将可见性设置为 Gone,那么现在您需要将其设置为 Visible

所以我检查了代码。将以下内容添加到您的代码中。事情应该有效:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_reset) {
View root = findViewById(R.id.root);
reset(root);
addListener(root);
mExplosionField.clear();
return true;
}
return super.onOptionsItemSelected(item);
}

private void reset(View root) {
if (root instanceof ViewGroup) {
ViewGroup parent = (ViewGroup) root;
for (int i = 0; i < parent.getChildCount(); i++) {
reset(parent.getChildAt(i));
}
} else {
root.setScaleX(1);
root.setScaleY(1);
root.setAlpha(1);
}
}

有关详细信息,请参阅此处的完整代码:https://github.com/tyrantgit/ExplosionField/blob/master/app/src/main/java/tyrantgit/sample/MainActivity.java

关于android - 如何在此动画后休息/初始状态 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33614309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com