私のメイン レイアウト ファイルでは、重み 2 の LinearLayout の上に重み 1 (基本的に地図を表示するため) の RelativeLayout があり、次のように宣言されています。
<LinearLayout
android:id="@+id/GlobalLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/UpLayout"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" >
</RelativeLayout>
<LinearLayout
android:id="@+id/DownLayout"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="2"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
DownLayout には項目のリストが含まれています。項目をクリックすると、DownLayout の重みを 4 に変更したいので、上部のレイアウト (マップ) は画面の 1/3 ではなく 1/5 しか占有しません。
私は LayoutParams を変更することでそれを行うことができました:
LinearLayout linearLayout = (LinearLayout) mActivity.findViewById(R.id.DownLayout);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 4.0f;
linearLayout.setLayoutParams(params);
それは機能しますが、私は満足していません。変化が速すぎます。スムーズにしたいのですが、移行はありません。そのためにアニメーションを使用する方法はありますか?
ObjectAnimator を使用して weightSum を変更する例をいくつか見つけましたが、必要ありません (このプロパティのみを変更すると、ダウン レイアウトの下に空きスペースができます)。
float ws = mLinearLayout.getWeightSum();
ObjectAnimator anim = ObjectAnimator.ofFloat(mLinearLayout, "weightSum", ws, 5.0f);
anim.setDuration(3000);
anim.addUpdateListener(this);
anim.start();
それを行うために ObjectAnimator (または何か他のもの) を使用する方法はありますか?
ありがとう !