我有2个LinearLayout。让我们说它们是左面板和主面板,如图所示。我正在使用动画隐藏左侧面板。这就是我使用的:
<scale
android:duration="500"
android:fromXScale="0.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/linear_interpolator"
android:toXScale="1.0"
android:toYScale="1.0" />
我在主面板上使用 android:layout_toRightOf =&#34; @ + id / left_panel&#34; 将其保持在左侧面板的右侧。问题是当我使用动画隐藏左面板时,主面板只是跳到起点。当我使用动画再次显示左面板时,主面板跳转到终点。
那么我怎样才能顺利地将这两个观点合并在一起呢?
答案 0 :(得分:1)
您可以使用幻灯片(平移)动画来代替使用缩放动画。触发事件(此处按钮单击)时,将两个面板的动画设置为向左滑动。你可以放一个反向动画来滑回它们。
我是这样做的。
<强> AnimActivity 强>
public class AnimActivity extends Activity {
View leftPanel, rightPanel;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_anim);
leftPanel = findViewById(R.id.left_panel);
rightPanel = findViewById(R.id.right_panel);
button = (Button) findViewById(R.id.btn_animate);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
leftPanel.startAnimation(
AnimationUtils.loadAnimation(AnimActivity.this,R.anim.slide_left));
rightPanel.startAnimation(
AnimationUtils.loadAnimation(AnimActivity.this,R.anim.slide_left));
}
});
}
}
<强> slide_left.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillEnabled="true" android:fillAfter="true" >
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-200.0"
android:interpolator="@android:anim/linear_interpolator"/>
</set>
<强> activity_anim.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/left_panel"
android:layout_width="100dp"
android:layout_height="match_parent"
android:background="#FFD94E4E"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/right_panel"
android:layout_width="420dp"
android:layout_height="match_parent"
android:background="#FF242325"
android:orientation="vertical" >
<Button
android:id="@+id/btn_animate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Animate" />
</LinearLayout>
</LinearLayout>
注意强>
这种方法存在一个很大的问题,那就是我已将固定宽度设置为左侧和右侧面板。但我不知道如何解决这个问题。对不起,但希望这有帮助。
答案 1 :(得分:0)
您可以使用导航抽屉进行左侧布局
http://www.tutorialsbuzz.com/2014/03/android-sliding-menu-navigation-drawer.html
http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/
编辑:
这个很容易实现
http://www.learn2crack.com/2014/06/android-sliding-navigation-drawer-example.html
您也可以在此链接找到许多有用的示例
https://github.com/Trinea/android-open-project/tree/master/English%20Version