Android片段与Facebook左侧导航菜单

时间:2013-06-11 07:37:12

标签: android facebook

我需要建议在现有项目中实施脸书导航。

MainLayout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<fragment
    android:id="@+id/fragment_actionbar"
    android:name="com.newvisioninteractive.android.mystyle.fragment.ActionbarFragment"
    android:layout_width="fill_parent"
    android:layout_height="44dp"
    android:layout_gravity="fill_horizontal" >

    <!-- Preview: layout=@layout/fragment_actionbar -->
</fragment>

<FrameLayout
    android:id="@+id/fragment_content"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

ActionbarFragment.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/actionbar_root"
    android:layout_width="fill_parent"
    android:layout_height="44dp"
    android:background="@color/accent" >  

    <ImageView
    android:id="@+id/actionbar_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentTop="true"
    android:paddingLeft="7dp"
    android:paddingRight="7dp"
    android:src="@drawable/ic_text_header"
    android:clickable="true"
    android:background="@drawable/bg_actionbar_highlight" />

    <LinearLayout 
    android:id="@+id/button_container" 
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentRight="true"
    android:layout_toRightOf="@id/actionbar_title"
    android:orientation="horizontal"
    android:gravity="right" />

这是我对应的片段活动类。

public class ActionbarFragment extends Fragment {

private View         mRoot;   
private ImageView    mHomeButton;
private LinearLayout mButtonContainer;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Activity activity = getActivity();
    //if (activity)
    mRoot = inflater.inflate(R.layout.fragment_actionbar, container, false);
    /*} else {
        mRoot = inflater.inflate(R.layout.fragment_actionbar_no_button, container, false);
    }*/


    mHomeButton      = (ImageView) mRoot.findViewById(R.id.actionbar_title);
    mButtonContainer = (LinearLayout) mRoot.findViewById(R.id.button_container);

    mHomeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Activity activity = getActivity();

            if (activity != null) {
                // Launch MyStyleActivity and clear all other Activities from the stack.
                Intent intent = new Intent(activity, MyStyleActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            }
        }

    });

    return mRoot;
}

/**
 * Remove all buttons from the actionbar. 
 */
public void resetButtons() {
    if (mButtonContainer != null) {
        mButtonContainer.removeAllViews();
    }
}

/**
 * Add any view as a button to the actionbar.
 * 
 * @param view The view that will act as a button.
 */
public void addButton(View view) {
    if (mButtonContainer != null && view != null) {

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.FILL_PARENT);

        View seperator = makeButtonSeperator();

        mButtonContainer.addView(seperator, seperator.getLayoutParams());
        mButtonContainer.addView(view, params);
    }
}

/**
 * Utility method for adding the vertical separator for actionbar buttons.
 * 
 * @return The separator.
 */
private FrameLayout makeButtonSeperator() {
    FrameLayout seperator = new FrameLayout(getActivity());

    final float scale = getResources().getDisplayMetrics().density;

    seperator.setLayoutParams(new LinearLayout.LayoutParams((int) (scale * 2), LinearLayout.LayoutParams.FILL_PARENT));
    seperator.setBackgroundColor(getResources().getColor(R.color.selector_highlight));

    return seperator;
}

}

我的问题是, 在课堂上,当我点击mHomeButton时,当前布局应该像facebook一样移动或滑出到右侧。

我真的使用Main布局中使用的片段进行构造。当我为片段制作动画时,只需移动不是整个布局。

先谢谢。

0 个答案:

没有答案