1. 程式人生 > >平移動畫,點選某個控制元件讓一個view收縮到右邊螢幕,再點選展開。

平移動畫,點選某個控制元件讓一個view收縮到右邊螢幕,再點選展開。

最近做了一個需求。就是點選一個箭頭 ,讓一個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); }