最近做了一个需求。就是点击一个箭头 ,让一个view收缩到右边屏幕,再点击这个View展开,其实看是收缩,其实是平移,让这个View平移View.getWidth的宽度,同时把这个View的坐标也平移过去(不平移坐标,点击监听会还在原来的位置),再让这个View平移 —View.getWindth的宽度回到原来的位置,
效果图(看红色箭头部分):
看代码:
设置一个全局boolean可以让我们重复的点击伸缩。
private boolean state = true;
public void onMove(View view) { width = mSmallWindow.getWidth();//获取控件的宽度 if (state) { translateAnimation(width ); state = false; } else { translateAnimation(-(width)); state = true; } } private void translateAnimation(final float i) { Animation translateAnimation = new TranslateAnimation(1, i, 1, 1); translateAnimation.setDuration(1000); translateAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { int left = (mSmallWindow.getLeft() + (int) (i - 1)); int top = mSmallWindow.getTop(); int width = mSmallWindow.getWidth(); int height = mSmallWindow.getHeight(); mSmallWindow.clearAnimation(); mSmallWindow.layout(left, top, left + width, top + height);//移动后返回的坐标位置 } }); mSmallWindow.startAnimation(translateAnimation); }