我在 android 的屏幕上有 3 个视图,假设像一组按钮、地图、列表和另一个信息视图。这些都是垂直存在的。
所以,如果我点击列表,地图应该得到更新,按钮颜色也应该改变。有时如果我单击按钮信息应该显示。
这种场景下,使用fragment好不好?或相对布局?建议
谢谢
我在 android 的屏幕上有 3 个视图,假设像一组按钮、地图、列表和另一个信息视图。这些都是垂直存在的。
所以,如果我点击列表,地图应该得到更新,按钮颜色也应该改变。有时如果我单击按钮信息应该显示。
这种场景下,使用fragment好不好?或相对布局?建议
谢谢
我会选择一个由RelativeLayout 组成的Activity,在RelativeLayout 中有3 个FrameLayouts。然后,我会将代码中的片段添加到 FrameLayouts。每个片段 1 个。通过这种方式,您可以轻松地以任何您想要的方式移动片段。滑动菜单,顶部滑动,侧滑,上下滑动,如此简单。如果你像这样设置它就很容易了。
选择最左侧时,您可以将另外 2 个向右推,当中心获得焦点时,将左侧的一个向左滑动,向右滑动一个,当最右侧的一个获得焦点时,将另一个向左滑动。
或者你可以从上到下。或者您可以始终让所有 3 个空间都相等。或者你总是可以把不集中的东西推到右、左、上、下,可能性是无穷无尽的。您可以将未聚焦的 2 到 1/4 尺寸缩小并将它们推到屏幕的一侧,一个在顶部,一个在底部。
看看我要去哪里?
否则做一个线性布局,有 3 个框架布局,并将每个框架布局设置为 weight = 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 文件中,然后就可以了。我从来没有亲自使用过片段,所以我不能说它们的用处,但是线性布局还没有让我失望。