Java Android动画错误,滑出并消失
我的动画只是滑出然后消失?有人能帮我解决问题吗 在顶部,我宣布了这一点Java Android动画错误,滑出并消失,java,android,Java,Android,我的动画只是滑出然后消失?有人能帮我解决问题吗 在顶部,我宣布了这一点 private RelativeLayout buttonContainer; buttonContainer = (RelativeLayout) sidebar.getParent(); 以下是我的功能部件代码: private RelativeLayout.LayoutParams params; public void startTapped(View view) { sid
private RelativeLayout buttonContainer;
buttonContainer = (RelativeLayout) sidebar.getParent();
以下是我的功能部件代码:
private RelativeLayout.LayoutParams params;
public void startTapped(View view) {
sideBar(44, 0);
}
public void sideBar(final int translateX, final int translateY)
{
TranslateAnimation translate = new TranslateAnimation(0, translateX, 0, translateY);
translate.setDuration(1500);
translate.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
buttonContainer.removeView(sidebar);
sidebar = new ImageView(Game.this);
sidebar.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
}
});
if(out == 0)
{
params.leftMargin = translateX + params.leftMargin;
params.topMargin = translateY + params.topMargin;
params.rightMargin = 0 + params.rightMargin;
params.bottomMargin = 0 + params.bottomMargin;
sidebar.setLayoutParams(params);
buttonContainer.addView(sidebar);
out=1;
}
else if(out == 1)
{
params.leftMargin = translateX - params.leftMargin;
params.topMargin = translateY - params.topMargin;
params.rightMargin = 0 - params.rightMargin;
params.bottomMargin = 0 - params.bottomMargin;
sidebar.setLayoutParams(params);
buttonContainer.addView(sidebar);
out=0;
}
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.sidebar:
startTapped(sidebar);
break;
}
}
它像预期的那样滑出,然后消失了,但是!,我仍然可以点击它,但它是看不见的。这里缺少大量的代码。。你没有很好地描述你的目标。。但看起来你已经把事情复杂化了。试试这个:
public void startTapped(View view) {
if (view.getVisibility() == View.GONE) {
view.startAnimation(sideBar(context.getResources()
.getDimensionPixelOffset(R.dimen.side_bar_width)*-1, 0));
view.setVisibility(View.VISIBLE);
} else {
view.setVisibility(View.GONE);
view.startAnimation(sideBar(0, context.getResources()
.getDimensionPixelOffset(R.dimen.side_bar_width)*-1));
}
}
public Animation sideBar(int start, int finish) {
TranslateAnimation translate = new TranslateAnimation(start, finish, 0, 0);
translate.setDuration(1500);
return translate;
}
将dimens.xml
文件添加到values
文件夹是res
:
<resources>
<dimen name="side_bar_width">44dp</dimen>
</resources>
44dp
您还需要将侧边栏视图设置为android:visibility=“gone”,以便在应用程序启动时菜单不会打开。当我这样做时,它会滑出右侧并立即返回到原来的位置,当我再次单击它时,它会弹出到该位置并滑回左侧,之所以会有这样的效果,是因为当它滑到右边时,我无法点击它。我不得不点击原来的位置。你能更新你的代码吗?我在上面展示的代码中给了你一个更好的方法。当它向右滑动时,它会滑出然后消失。但是我仍然可以点击消失框。我假设你正在创建一个类似幻灯片的菜单。因此,动画从屏幕外进入,并在关闭幻灯片上返回。你应该在使用菜单的地方画菜单。所以动画只是给人一种离开屏幕的错觉,你真正做的就是让它可见或消失。当我使用你的代码时,它会滑出然后滑回。但是,当我再次单击时,它会滑回,好像它总是退出。