http://developer.android.com/guide/topics/graphics/prop-animation.html#object-animator
你应该使用objectAnimator,这里是从右向左滑动片段的示例代码:
private View mPanel1;
private View mPanel2;
private View mLayout;
boolean isCollapsed;
private int LayoutWidth;
private int Panel1Width;
private int Panel2Width;
private static final TimeInterpolator sCollapseInterpolator = new DecelerateInterpolator(2.5F);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLayout = findViewById(R.id.linearlayout);
mPanel1 = findViewById(R.id.fragment1);
mPanel2 = findViewById(R.id.fragment2);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// Measure width of layout and mPanel1 which is FragmentList. This is needed for ObjectAnimator
// to create transition animation
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
LayoutWidth = size.x;
Panel1Width = mPanel1.getWidth();
Panel2Width = mPanel2.getWidth();
}
public void slide(){
if(isCollapsed){
PropertyValuesHolder[] arrayOfPropertyValuesHolder = new PropertyValuesHolder[2];
arrayOfPropertyValuesHolder[0] = PropertyValuesHolder.ofInt("PanelLeft", Panel1Width * -1, 0);
arrayOfPropertyValuesHolder[1] = PropertyValuesHolder.ofInt("Panel2W", LayoutWidth, LayoutWidth - Panel1Width);
ObjectAnimator localObjectAnimator = ObjectAnimator.ofPropertyValuesHolder(this, arrayOfPropertyValuesHolder).setDuration(400);
localObjectAnimator.setInterpolator(sCollapseInterpolator);
localObjectAnimator.start();
}
else{
PropertyValuesHolder[] arrayOfPropertyValuesHolder = new PropertyValuesHolder[2];
arrayOfPropertyValuesHolder[0] = PropertyValuesHolder.ofInt("PanelLeft", 0, Panel1Width / -1);
arrayOfPropertyValuesHolder[1] = PropertyValuesHolder.ofInt("Panel2W", LayoutWidth - Panel1Width, LayoutWidth);
ObjectAnimator localObjectAnimator = ObjectAnimator.ofPropertyValuesHolder(this, arrayOfPropertyValuesHolder).setDuration(400);
localObjectAnimator.setInterpolator(sCollapseInterpolator);
localObjectAnimator.start();
}
isCollapsed = !isCollapsed;
}
public int getPanelLeft() {
return ((ViewGroup.MarginLayoutParams) mLayout.getLayoutParams()).leftMargin;
}
public void setPanelLeft(int paramInt) {
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) mLayout.getLayoutParams();
lp.leftMargin = paramInt;
mLayout.setLayoutParams(lp);
}
public int getPanel2W() {
return ((ViewGroup.MarginLayoutParams) mPanel2.getLayoutParams()).width;
}
public void setPanel2W(int paramInt) {
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) mPanel2.getLayoutParams();
lp.width = paramInt;
mPanel2.setLayoutParams(lp);
}
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/linearlayout" >
<fragment
android:id="@+id/fragment1"
android:name="package.your.fragment1"
android:layout_width="320dp"
android:layout_height="match_parent"/>
<fragment
android:id="@+id/fragment2"
android:name="package.your.fragment2"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>