我试图制作一个标签外观 - 类似按钮的行背景为ImageView。
这是ImageView:
现在在此图像上,片段加载时有三个按钮。
当我点击按钮1时: 有两种情况: 1)当屏幕看起来像上面的图像,然后我想将按钮向右移动,所以屏幕看起来像这样:
当它看起来像上面的图像时,我希望它返回到第一个图像状态。
最后一种情况是,当用户按下B3时,我希望它对B1做出反应,但对另一方做出反应,如下所示:
到目前为止,我尝试了很多方法来尝试这个,都没有用,似乎当我动画移动时按钮停留在同一个地方:
到目前为止,这是我的代码:
btn_spa.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
isMapPressed=false;
isInfoPressed=false;
int toMoveNow=0;
if(!isSpaPressed)
{
if(isMapPressed)
toMoveNow=(toMove/2)+40;
else
toMoveNow=-(toMove/2+40);
int[] arr = new int[]{0,0};
btn_spa.getLocationOnScreen(arr);
Animation animation = new TranslateAnimation(arr[0], toMoveNow, 0, 0);
animation.setDuration(1000);
animation.setFillAfter(true);
//rel_buttons_wrapper.startAnimation(animation);
btn_info.startAnimation(animation);
btn_map.startAnimation(animation);
btn_spa.startAnimation(animation);
Toast.makeText(getActivity(), "Button spa clicked", Toast.LENGTH_SHORT).show();
}
}
});
btn_map.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0)
{
isSpaPressed=false;
isInfoPressed=false;
int toMoveNow=0;
if(!isMapPressed && isSpaPressed)
{
toMoveNow=-(toMove/2+40);
int[] arr = new int[]{0,0};
btn_map.getLocationOnScreen(arr);
Animation animation = new TranslateAnimation(arr[0], toMoveNow, 0, 0);
animation.setDuration(1000);
animation.setFillAfter(true);
// rel_buttons_wrapper.startAnimation(animation);
btn_info.startAnimation(animation);
btn_map.startAnimation(animation);
btn_spa.startAnimation(animation);
Toast.makeText(getActivity(), "Button map clicked", Toast.LENGTH_SHORT).show();
}
else
{
toMoveNow=(toMove/2+40);
int[] arr = new int[]{0,0};
btn_map.getLocationOnScreen(arr);
Animation animation = new TranslateAnimation(arr[0], toMoveNow, 0, 0);
animation.setDuration(1000);
animation.setFillAfter(true);
// rel_buttons_wrapper.startAnimation(animation);
btn_info.startAnimation(animation);
btn_map.startAnimation(animation);
btn_spa.startAnimation(animation);
Toast.makeText(getActivity(), "Button map clicked", Toast.LENGTH_SHORT).show();
}
}
});
btn_info.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
int toMoveNow=0;
if(!isInfoPressed && isSpaPressed)
{
toMoveNow=(toMove/2)+40;
int[] arr = new int[]{0,0};
btn_info.getLocationOnScreen(arr);
Animation animation = new TranslateAnimation(arr[0], toMoveNow, 0, 0);
animation.setDuration(1000);
animation.setFillAfter(true);
rel_buttons_wrapper.startAnimation(animation);
btn_info.startAnimation(animation);
btn_map.startAnimation(animation);
btn_spa.startAnimation(animation);
Toast.makeText(getActivity(), "Button info clicked", Toast.LENGTH_SHORT).show();
}
else
{
toMoveNow=-(toMove/2);
int[] arr = new int[]{0,0};
btn_info.getLocationOnScreen(arr);
Animation animation = new TranslateAnimation(arr[0], toMoveNow, 0, 0);
animation.setDuration(1000);
animation.setFillAfter(true);
rel_buttons_wrapper.startAnimation(animation);
btn_info.startAnimation(animation);
btn_map.startAnimation(animation);
btn_spa.startAnimation(animation);
Toast.makeText(getActivity(), "Button info clicked", Toast.LENGTH_SHORT).show();
}
isSpaPressed=false;
isMapPressed=false;
}
});
对于这个长期问题,我很抱歉,我希望尽可能提供信息。
任何帮助都是好人,
亲切的问候。
答案 0 :(得分:0)
你可以使用ObjectAnimator类,它会移动视图及其边界,以便它们在移动时实际移动,这是一个教程: http://developer.android.com/guide/topics/graphics/prop-animation.html#object-animator