Androidの画面に3つのビューがあり、ボタン、マップ、リスト、および別の情報ビューのセットを想定しています。これらはすべて垂直に存在します。
したがって、リストをクリックすると、マップが更新され、ボタンの色も変更されます。ボタンをクリックすると、情報が表示されるはずです。
このシナリオでは、フラグメントを使用するのは適切ですか? または相対レイアウト?提案
ありがとう
Androidの画面に3つのビューがあり、ボタン、マップ、リスト、および別の情報ビューのセットを想定しています。これらはすべて垂直に存在します。
したがって、リストをクリックすると、マップが更新され、ボタンの色も変更されます。ボタンをクリックすると、情報が表示されるはずです。
このシナリオでは、フラグメントを使用するのは適切ですか? または相対レイアウト?提案
ありがとう
RelativeLayout で構成されるアクティビティを使用し、RelativeLayout 内に 3 つの FrameLayouts を配置します。次に、コードで Fragments を FrameLayouts に追加します。それぞれに 1 つのフラグメント。このようにして、フラグメントを任意の方法で簡単に移動できます。スライドメニュー、上スライド、横スライド、上下スライド、とても簡単。このように設定すれば簡単です。
左端が選択されている場合は、他の 2 つを右に押し出すことができます。中央がフォーカスを受けると、左が左に、右が右にスライドし、右端がフォーカスされると、もう一方を左にスライドします。
または、上から下に行うこともできます。または、常に 3 つすべてに等しいスペースを持たせることもできます。または、フォーカスされていないものを常に右、左、上、下に押し込むことができます。可能性は無限大です。フォーカスされていない 2 を 1/4 サイズに縮小し、画面の片側に、1 つは上に、もう 1 つは下に押し込むことができます。
私がどこに行くのか分かりますか?
それ以外の場合は、3 つのフレームレイアウトで線形レイアウトを実行し、各フレームレイアウトを重み = 1 に設定します (常に完全に維持するには、他のいくつかのオプションを切り替える必要がある場合があります)。次に、フラグメントを追加します。
public void swapfragment(int fragId, Bundle args, boolean slide)
{
FragmentTransaction ft = getFragmentManager().beginTransaction();
switch (fragId)
{
case FRAGID_DEVICE:
currentFrag = new FragmentDevice();
currentFrag.setArguments(args);
((FragmentDevice) currentFrag).initialize();
break;
case FRAGID_NETWORK:
currentFrag = new FragmentNetwork();
currentFrag.setArguments(args);
((FragmentNetwork) currentFrag).initialize();
break;
}
ft.replace(R.id.flFragHost, currentFrag).commit();
if (slide)
slideFragment();
}
private void slideFragment()
{
final Point displaySize = new Point();
getWindowManager().getDefaultDisplay().getSize(displaySize);
if (isFragmentOut)
{
isFragmentOut = false;
Animation slideOutAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_right_out_80);
AnimationListener listener = new Animation.AnimationListener()
{
public void onAnimationStart(Animation animation)
{
}
public void onAnimationRepeat(Animation animation)
{
}
public void onAnimationEnd(Animation animation)
{
int pushback = (int) (displaySize.x * .8f);
rlFragHost.clearAnimation();
RelativeLayout.LayoutParams FragContainerParams;
FragContainerParams = (android.widget.RelativeLayout.LayoutParams) rlFragHost.getLayoutParams();
FragContainerParams.setMargins(pushback, 0, pushback * -1, 0);
rlFragHost.setLayoutParams(FragContainerParams);
}
};
slideOutAnimation.setAnimationListener(listener);
rlFragHost.startAnimation(slideOutAnimation);
}
else
{
isFragmentOut = true;
Animation slideInAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_left_in_80);
AnimationListener listener = new Animation.AnimationListener()
{
public void onAnimationStart(Animation animation)
{
}
public void onAnimationRepeat(Animation animation)
{
}
public void onAnimationEnd(Animation animation)
{
rlFragHost.clearAnimation();
RelativeLayout.LayoutParams FragContainerParams;
FragContainerParams = (android.widget.RelativeLayout.LayoutParams) rlFragHost.getLayoutParams();
FragContainerParams.setMargins(0, 0, 0, 0);
rlFragHost.setLayoutParams(FragContainerParams);
}
};
slideInAnimation.setAnimationListener(listener);
rlFragHost.startAnimation(slideInAnimation);
}
}
これがまさにあなたが必要としているものではないことはわかっていますが、それで始められるはずです。これが私がスライドメニューを行う方法です。
個人的な好みが多いと思います。私の特にお気に入りは直線的なレイアウトです。アイテムを縦に表示したいとおっしゃいましたが、android:orientation="vertical" を設定し、アイテムを xml ファイルに順番に配置するだけです。私はフラグメントを個人的に使用したことがないので、その有用性について話すことはできませんが、線形レイアウトはまだ私を失望させていません.