Fragment碎片化仿人人

 其实一种好的UI布局,可以使用户感到更加的亲切与方便。最近非常流行的莫过于侧边栏了,其实我也做过很多侧边栏的应用,但是那些侧边栏的使用我都不是很满意,现在重新整理,重新写了一个相对来说我比较满意的侧边栏,其中运用的就是android3.0版本之后新加的Fragment碎片化,碎片化的使用将来也是一个趋势,所以通过我这个程序你既可以学到侧边栏,也能让你更加熟悉碎片化的使用,一举两得的事。哈哈……废话不多说了,直接上图。图片如下:

Fragment碎片化仿人人_第1张图片Fragment碎片化仿人人_第2张图片Fragment碎片化仿人人_第3张图片

①、自定义一个View,把左侧边栏视图,中间内容视图,右侧边栏视图放在里面,这里给这个View起名叫:SlidingMenu.java

代码如下:

[java]  view plain copy
  1. package net.loonggg.view;  
  2.   
  3. import android.content.Context;  
  4. import android.util.AttributeSet;  
  5. import android.view.View;  
  6. import android.widget.RelativeLayout;  
  7.   
  8. public class SlidingMenu extends RelativeLayout {  
  9.   
  10.     private SlidingView mSlidingView;  
  11.     private View mMenuView;  
  12.     private View mDetailView;  
  13.   
  14.     public SlidingMenu(Context context) {  
  15.         super(context);  
  16.     }  
  17.   
  18.     public SlidingMenu(Context context, AttributeSet attrs) {  
  19.         super(context, attrs);  
  20.     }  
  21.   
  22.     public SlidingMenu(Context context, AttributeSet attrs, int defStyle) {  
  23.         super(context, attrs, defStyle);  
  24.     }  
  25.   
  26.     public void addViews(View left, View center, View right) {  
  27.         setLeftView(left);  
  28.         setRightView(right);  
  29.         setCenterView(center);  
  30.     }  
  31.   
  32.     /** 
  33.      * 添加左侧边栏的view 
  34.      *  
  35.      * @param view 
  36.      */  
  37.     @SuppressWarnings("deprecation")  
  38.     public void setLeftView(View view) {  
  39.         LayoutParams behindParams = new LayoutParams(LayoutParams.WRAP_CONTENT,  
  40.                 LayoutParams.FILL_PARENT);  
  41.         behindParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);// 在父控件的左边  
  42.         addView(view, behindParams);  
  43.         mMenuView = view;  
  44.     }  
  45.   
  46.     /** 
  47.      * 添加右侧边栏的view 
  48.      *  
  49.      * @param view 
  50.      */  
  51.     @SuppressWarnings("deprecation")  
  52.     public void setRightView(View view) {  
  53.         LayoutParams behindParams = new LayoutParams(LayoutParams.WRAP_CONTENT,  
  54.                 LayoutParams.FILL_PARENT);  
  55.         behindParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);// 在父控件的右边  
  56.         addView(view, behindParams);  
  57.         mDetailView = view;  
  58.     }  
  59.   
  60.     /** 
  61.      * 添加中间内容的view 
  62.      *  
  63.      * @param view 
  64.      */  
  65.     @SuppressWarnings("deprecation")  
  66.     public void setCenterView(View view) {  
  67.         LayoutParams aboveParams = new LayoutParams(LayoutParams.FILL_PARENT,  
  68.                 LayoutParams.FILL_PARENT);  
  69.         mSlidingView = new SlidingView(getContext());  
  70.         mSlidingView.setView(view);  
  71.         addView(mSlidingView, aboveParams);  
  72.         mSlidingView.setMenuView(mMenuView);  
  73.         mSlidingView.setDetailView(mDetailView);  
  74.         mSlidingView.invalidate();  
  75.     }  
  76.   
  77.     public void showLeftView() {  
  78.         mSlidingView.showLeftView();  
  79.     }  
  80.   
  81.     public void showRightView() {  
  82.         mSlidingView.showRightView();  
  83.     }  
  84. }  

②、通过一个中间的View,去控制左右侧边栏的滑进与滑出,这个也是自定义的一个View,名字叫:SlidingView.java

代码如下:

[java]  view plain copy
  1. package net.loonggg.view;  
  2.   
  3. import android.content.Context;  
  4. import android.graphics.Canvas;  
  5. import android.util.AttributeSet;  
  6. import android.util.Log;  
  7. import android.view.MotionEvent;  
  8. import android.view.VelocityTracker;  
  9. import android.view.View;  
  10. import android.view.ViewConfiguration;  
  11. import android.view.ViewGroup;  
  12. import android.widget.FrameLayout;  
  13. import android.widget.Scroller;  
  14.   
  15. public class SlidingView extends ViewGroup {  
  16.   
  17.     private FrameLayout mContainer;  
  18.     private Scroller mScroller;  
  19.     private VelocityTracker mVelocityTracker;  
  20.     private int mTouchSlop;  
  21.     private float mLastMotionX;  
  22.     private float mLastMotionY;  
  23.     private static final int SNAP_VELOCITY = 1000;  
  24.     private View mMenuView;  
  25.     private View mDetailView;  
  26.   
  27.     public SlidingView(Context context) {  
  28.         super(context);  
  29.         init();  
  30.     }  
  31.   
  32.     public SlidingView(Context context, AttributeSet attrs) {  
  33.         super(context, attrs);  
  34.         init();  
  35.     }  
  36.   
  37.     public SlidingView(Context context, AttributeSet attrs, int defStyle) {  
  38.         super(context, attrs, defStyle);  
  39.         init();  
  40.     }  
  41.   
  42.     @Override  
  43.     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
  44.         super.onMeasure(widthMeasureSpec, heightMeasureSpec);  
  45.         mContainer.measure(widthMeasureSpec, heightMeasureSpec);  
  46.     }  
  47.   
  48.     @Override  
  49.     protected void onLayout(boolean changed, int l, int t, int r, int b) {  
  50.         final int width = r - l;  
  51.         final int height = b - t;  
  52.         mContainer.layout(00, width, height);  
  53.     }  
  54.   
  55.     private void init() {  
  56.         mContainer = new FrameLayout(getContext());  
  57.         mContainer.setBackgroundColor(0xff000000);  
  58.         mScroller = new Scroller(getContext());  
  59.         mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();  
  60.         super.addView(mContainer);  
  61.     }  
  62.   
  63.     public void setView(View v) {  
  64.         if (mContainer.getChildCount() > 0) {  
  65.             mContainer.removeAllViews();  
  66.         }  
  67.         mContainer.addView(v);  
  68.     }  
  69.   
  70.     @Override  
  71.     public void scrollTo(int x, int y) {  
  72.         super.scrollTo(x, y);  
  73.         postInvalidate();  
  74.     }  
  75.   
  76.     @Override  
  77.     public void computeScroll() {  
  78.         if (!mScroller.isFinished()) {  
  79.             if (mScroller.computeScrollOffset()) {  
  80.                 int oldX = getScrollX();  
  81.                 int oldY = getScrollY();  
  82.                 int x = mScroller.getCurrX();  
  83.                 int y = mScroller.getCurrY();  
  84.                 if (oldX != x || oldY != y) {  
  85.                     scrollTo(x, y);  
  86.                 }  
  87.                 // Keep on drawing until the animation has finished.  
  88.                 invalidate();  
  89.             } else {  
  90.                 clearChildrenCache();  
  91.             }  
  92.         } else {  
  93.             clearChildrenCache();  
  94.         }  
  95.     }  
  96.   
  97.     private boolean mIsBeingDragged;  
  98.   
  99.     @Override  
  100.     public boolean onInterceptTouchEvent(MotionEvent ev) {  
  101.   
  102.         final int action = ev.getAction();  
  103.         final float x = ev.getX();  
  104.         final float y = ev.getY();  
  105.   
  106.         switch (action) {  
  107.         case MotionEvent.ACTION_DOWN:  
  108.             mLastMotionX = x;  
  109.             mLastMotionY = y;  
  110.             mIsBeingDragged = false;  
  111.             break;  
  112.   
  113.         case MotionEvent.ACTION_MOVE:  
  114.             final float dx = x - mLastMotionX;  
  115.             final float xDiff = Math.abs(dx);  
  116.             final float yDiff = Math.abs(y - mLastMotionY);  
  117.             if (xDiff > mTouchSlop && xDiff > yDiff) {  
  118.                 mIsBeingDragged = true;  
  119.                 mLastMotionX = x;  
  120.             }  
  121.             break;  
  122.   
  123.         }  
  124.         return mIsBeingDragged;  
  125.     }  
  126.   
  127.     @Override  
  128.     public boolean onTouchEvent(MotionEvent ev) {  
  129.   
  130.         if (mVelocityTracker == null) {  
  131.             mVelocityTracker = VelocityTracker.obtain();  
  132.         }  
  133.         mVelocityTracker.addMovement(ev);  
  134.   
  135.         final int action = ev.getAction();  
  136.         final float x = ev.getX();  
  137.         final float y = ev.getY();  
  138.   
  139.         switch (action) {  
  140.         case MotionEvent.ACTION_DOWN:  
  141.             if (!mScroller.isFinished()) {  
  142.                 mScroller.abortAnimation();  
  143.             }  
  144.             mLastMotionX = x;  
  145.             mLastMotionY = y;  
  146.             if (getScrollX() == -getMenuViewWidth()  
  147.                     && mLastMotionX < getMenuViewWidth()) {  
  148.                 return false;  
  149.             }  
  150.   
  151.             if (getScrollX() == getDetailViewWidth()  
  152.                     && mLastMotionX > getMenuViewWidth()) {  
  153.                 return false;  
  154.             }  
  155.   
  156.             break;  
  157.         case MotionEvent.ACTION_MOVE:  
  158.             if (mIsBeingDragged) {  
  159.                 enableChildrenCache();  
  160.                 final float deltaX = mLastMotionX - x;  
  161.                 mLastMotionX = x;  
  162.                 float oldScrollX = getScrollX();  
  163.                 float scrollX = oldScrollX + deltaX;  
  164.   
  165.                 if (deltaX < 0 && oldScrollX < 0) { // left view  
  166.                     final float leftBound = 0;  
  167.                     final float rightBound = -getMenuViewWidth();  
  168.                     if (scrollX > leftBound) {  
  169.                         scrollX = leftBound;  
  170.                     } else if (scrollX < rightBound) {  
  171.                         scrollX = rightBound;  
  172.                     }  
  173.                     // mDetailView.setVisibility(View.INVISIBLE);  
  174.                     // mMenuView.setVisibility(View.VISIBLE);  
  175.                 } else if (deltaX > 0 && oldScrollX > 0) { // right view  
  176.                     final float rightBound = getDetailViewWidth();  
  177.                     final float leftBound = 0;  
  178.                     if (scrollX < leftBound) {  
  179.                         scrollX = leftBound;  
  180.                     } else if (scrollX > rightBound) {  
  181.                         scrollX = rightBound;  
  182.                     }  
  183.                     // mDetailView.setVisibility(View.VISIBLE);  
  184.                     // mMenuView.setVisibility(View.INVISIBLE);  
  185.                 }  
  186.   
  187.                 scrollTo((int) scrollX, getScrollY());  
  188.   
  189.             }  
  190.             break;  
  191.         case MotionEvent.ACTION_CANCEL:  
  192.         case MotionEvent.ACTION_UP:  
  193.             if (mIsBeingDragged) {  
  194.                 final VelocityTracker velocityTracker = mVelocityTracker;  
  195.                 velocityTracker.computeCurrentVelocity(1000);  
  196.                 int velocityX = (int) velocityTracker.getXVelocity();  
  197.                 velocityX = 0;  
  198.                 Log.e("ad""velocityX == " + velocityX);  
  199.                 int oldScrollX = getScrollX();  
  200.                 int dx = 0;  
  201.                 if (oldScrollX < 0) {  
  202.                     if (oldScrollX < -getMenuViewWidth() / 2  
  203.                             || velocityX > SNAP_VELOCITY) {  
  204.                         dx = -getMenuViewWidth() - oldScrollX;  
  205.                     } else if (oldScrollX >= -getMenuViewWidth() / 2  
  206.                             || velocityX < -SNAP_VELOCITY) {  
  207.                         dx = -oldScrollX;  
  208.                     }  
  209.                 } else {  
  210.                     if (oldScrollX > getDetailViewWidth() / 2  
  211.                             || velocityX < -SNAP_VELOCITY) {  
  212.                         dx = getDetailViewWidth() - oldScrollX;  
  213.                     } else if (oldScrollX <= getDetailViewWidth() / 2  
  214.                             || velocityX > SNAP_VELOCITY) {  
  215.                         dx = -oldScrollX;  
  216.                     }  
  217.                 }  
  218.   
  219.                 smoothScrollTo(dx);  
  220.                 clearChildrenCache();  
  221.   
  222.             }  
  223.   
  224.             break;  
  225.   
  226.         }  
  227.         if (mVelocityTracker != null) {  
  228.             mVelocityTracker.recycle();  
  229.             mVelocityTracker = null;  
  230.         }  
  231.   
  232.         return true;  
  233.     }  
  234.   
  235.     private int getMenuViewWidth() {  
  236.         if (mMenuView == null) {  
  237.             return 0;  
  238.         }  
  239.         return mMenuView.getWidth();  
  240.     }  
  241.   
  242.     private int getDetailViewWidth() {  
  243.         if (mDetailView == null) {  
  244.             return 0;  
  245.         }  
  246.         return mDetailView.getWidth();  
  247.     }  
  248.   
  249.     @Override  
  250.     protected void onDraw(Canvas canvas) {  
  251.         super.onDraw(canvas);  
  252.     }  
  253.   
  254.     public View getDetailView() {  
  255.         return mDetailView;  
  256.     }  
  257.   
  258.     public void setDetailView(View mDetailView) {  
  259.         this.mDetailView = mDetailView;  
  260.     }  
  261.   
  262.     public View getMenuView() {  
  263.         return mMenuView;  
  264.     }  
  265.   
  266.     public void setMenuView(View mMenuView) {  
  267.         this.mMenuView = mMenuView;  
  268.     }  
  269.   
  270.     // void toggle() {  
  271.     // int menuWidth = mMenuView.getWidth();  
  272.     // int oldScrollX = getScrollX();  
  273.     // if (oldScrollX == 0) {  
  274.     // smoothScrollTo(-menuWidth);  
  275.     // } else if (oldScrollX == -menuWidth) {  
  276.     // smoothScrollTo(menuWidth);  
  277.     // }  
  278.     // }  
  279.   
  280.     /** 
  281.      * 左侧边栏的关闭与显示 
  282.      */  
  283.     public void showLeftView() {  
  284.         int menuWidth = mMenuView.getWidth();  
  285.         int oldScrollX = getScrollX();  
  286.         if (oldScrollX == 0) {  
  287.             smoothScrollTo(-menuWidth);  
  288.         } else if (oldScrollX == -menuWidth) {  
  289.             smoothScrollTo(menuWidth);  
  290.         }  
  291.     }  
  292.   
  293.     /** 
  294.      * 右侧边栏的关闭与显示 
  295.      */  
  296.     public void showRightView() {  
  297.         int menuWidth = mDetailView.getWidth();  
  298.         int oldScrollX = getScrollX();  
  299.         if (oldScrollX == 0) {  
  300.             smoothScrollTo(menuWidth);  
  301.         } else if (oldScrollX == menuWidth) {  
  302.             smoothScrollTo(-menuWidth);  
  303.         }  
  304.     }  
  305.   
  306.     void smoothScrollTo(int dx) {  
  307.         int duration = 500;  
  308.         int oldScrollX = getScrollX();  
  309.         mScroller.startScroll(oldScrollX, getScrollY(), dx, getScrollY(),  
  310.                 duration);  
  311.         invalidate();  
  312.     }  
  313.   
  314.     void enableChildrenCache() {  
  315.         final int count = getChildCount();  
  316.         for (int i = 0; i < count; i++) {  
  317.             final View layout = (View) getChildAt(i);  
  318.             layout.setDrawingCacheEnabled(true);  
  319.         }  
  320.     }  
  321.   
  322.     void clearChildrenCache() {  
  323.         final int count = getChildCount();  
  324.         for (int i = 0; i < count; i++) {  
  325.             final View layout = (View) getChildAt(i);  
  326.             layout.setDrawingCacheEnabled(false);  
  327.         }  
  328.     }  
  329.   
  330. }  

③、在MainActivity的布局文件中,引用咱们自定义的侧边栏View,MainActivity的布局文件代码如下:activity_main.xml:

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <net.loonggg.view.SlidingMenu xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/slidingMenu"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent" />  

④、MainActivity继承碎片化FragmentActivity,其代码如下:

[java]  view plain copy
  1. package net.loonggg.fragment;  
  2.   
  3. import net.loonggg.view.SlidingMenu;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.support.v4.app.FragmentActivity;  
  7. import android.support.v4.app.FragmentTransaction;  
  8. import android.view.View;  
  9. import android.view.Window;  
  10.   
  11. public class MainActivity extends FragmentActivity {  
  12.     private SlidingMenu mSlidingMenu;// 侧边栏的view  
  13.     private LeftFragment leftFragment; // 左侧边栏的碎片化view  
  14.     private RightFragment rightFragment; // 右侧边栏的碎片化view  
  15.     private SampleListFragment centerFragment;// 中间内容碎片化的view  
  16.     private FragmentTransaction ft; // 碎片化管理的事务  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         // 去标题栏  
  22.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  23.         setContentView(R.layout.activity_main);  
  24.         mSlidingMenu = (SlidingMenu) findViewById(R.id.slidingMenu);  
  25.         mSlidingMenu.setLeftView(getLayoutInflater().inflate(  
  26.                 R.layout.left_frame, null));  
  27.         mSlidingMenu.setRightView(getLayoutInflater().inflate(  
  28.                 R.layout.right_frame, null));  
  29.         mSlidingMenu.setCenterView(getLayoutInflater().inflate(  
  30.                 R.layout.center_frame, null));  
  31.   
  32.         ft = this.getSupportFragmentManager().beginTransaction();  
  33.         leftFragment = new LeftFragment();  
  34.         rightFragment = new RightFragment();  
  35.         ft.replace(R.id.left_frame, leftFragment);  
  36.         ft.replace(R.id.right_frame, rightFragment);  
  37.   
  38.         centerFragment = new SampleListFragment();  
  39.         ft.replace(R.id.center_frame, centerFragment);  
  40.         ft.commit();  
  41.   
  42.     }  
  43.   
  44.     public void llronclick(View v) {  
  45.         switch (v.getId()) {  
  46.         case R.id.llr_energy_management:  
  47.   
  48.             Intent intent = new Intent(this, DetailsActivity.class);  
  49.             startActivity(intent);  
  50.             break;  
  51.   
  52.         default:  
  53.             break;  
  54.         }  
  55.     }  
  56.   
  57.     public void showLeft() {  
  58.         mSlidingMenu.showLeftView();  
  59.     }  
  60.   
  61.     public void showRight() {  
  62.         mSlidingMenu.showRightView();  
  63.     }  
  64.   
  65. }  

⑤、左中右,左侧边栏,中间内容部分,右侧边栏,分别用Fragment代替,呈现出你想要的界面,这里我们只需要写Fragment就可以了,中间部分我们用SampleListFragment代替其中间内容部分,SampleListFragment的代码如下:

[java]  view plain copy
  1. package net.loonggg.fragment;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import android.content.Intent;  
  9. import android.os.Bundle;  
  10. import android.support.v4.app.ListFragment;  
  11. import android.util.Log;  
  12. import android.view.LayoutInflater;  
  13. import android.view.View;  
  14. import android.view.View.OnClickListener;  
  15. import android.view.ViewGroup;  
  16. import android.widget.ImageView;  
  17. import android.widget.ListView;  
  18. import android.widget.SimpleAdapter;  
  19.   
  20. public class SampleListFragment extends ListFragment {  
  21.     private ImageView lv_left;  
  22.     private ImageView iv_right;  
  23.   
  24.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  25.             Bundle savedInstanceState) {  
  26.         View mView = inflater.inflate(R.layout.list, null);  
  27.         lv_left = (ImageView) mView.findViewById(R.id.iv_left);  
  28.         iv_right = (ImageView) mView.findViewById(R.id.iv_right);  
  29.         return mView;  
  30.     }  
  31.   
  32.     public void onActivityCreated(Bundle savedInstanceState) {  
  33.         super.onActivityCreated(savedInstanceState);  
  34.         Map<String, Object> item1 = new HashMap<String, Object>();  
  35.         item1.put("list_title", getString(R.string.title1));  
  36.         item1.put("list_image", R.drawable.p1);  
  37.         item1.put("list_contect", getString(R.string.test));  
  38.         Map<String, Object> item2 = new HashMap<String, Object>();  
  39.         item2.put("list_title", getString(R.string.title1));  
  40.         item2.put("list_image", R.drawable.p2);  
  41.         item2.put("list_contect", getString(R.string.test));  
  42.         Map<String, Object> item3 = new HashMap<String, Object>();  
  43.         item3.put("list_title", getString(R.string.title1));  
  44.         item3.put("list_image", R.drawable.p3);  
  45.         item3.put("list_contect", getString(R.string.test));  
  46.         Map<String, Object> item4 = new HashMap<String, Object>();  
  47.         item4.put("list_title", getString(R.string.title1));  
  48.         item4.put("list_image", R.drawable.p4);  
  49.         item4.put("list_contect", getString(R.string.test));  
  50.         Map<String, Object> item5 = new HashMap<String, Object>();  
  51.         item5.put("list_title", getString(R.string.title1));  
  52.         item5.put("list_image", R.drawable.p5);  
  53.         item5.put("list_contect", getString(R.string.test));  
  54.         Map<String, Object> item6 = new HashMap<String, Object>();  
  55.         item6.put("list_title", getString(R.string.title1));  
  56.         item6.put("list_image", R.drawable.p6);  
  57.         item6.put("list_contect", getString(R.string.test));  
  58.         Map<String, Object> item7 = new HashMap<String, Object>();  
  59.         item7.put("list_title", getString(R.string.title1));  
  60.         item7.put("list_image", R.drawable.p7);  
  61.         item7.put("list_contect", getString(R.string.test));  
  62.         List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();  
  63.         data.add(item1);  
  64.         data.add(item2);  
  65.         data.add(item3);  
  66.         data.add(item4);  
  67.         data.add(item5);  
  68.         data.add(item6);  
  69.         data.add(item7);  
  70.   
  71.         String[] from = new String[] { "list_title""list_image",  
  72.                 "list_contect" };  
  73.         int[] to = new int[] { R.id.list_title, R.id.list_image,  
  74.                 R.id.list_contect };  
  75.         SimpleAdapter adapter = new SimpleAdapter(getActivity(), data,  
  76.                 R.layout.list_item, from, to);  
  77.         setListAdapter(adapter);  
  78.   
  79.         lv_left.setOnClickListener(new OnClickListener() {  
  80.   
  81.             public void onClick(View v) {  
  82.                 ((MainActivity) getActivity()).showLeft();  
  83.             }  
  84.         });  
  85.   
  86.         iv_right.setOnClickListener(new OnClickListener() {  
  87.   
  88.             public void onClick(View v) {  
  89.                 ((MainActivity) getActivity()).showRight();  
  90.             }  
  91.         });  
  92.     }  
  93.   
  94.     @Override  
  95.     public void onListItemClick(ListView l, View v, int position, long id) {  
  96.         super.onListItemClick(l, v, position, id);  
  97.         Intent intent = new Intent(getActivity(), DetailsActivity.class);  
  98.         startActivity(intent);  
  99.     }  
  100. }  

⑥、左侧边栏的View用LeftFragment替代,LeftFragment代码如下:

[java]  view plain copy
  1. package net.loonggg.fragment;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.support.v4.app.FragmentTransaction;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.widget.LinearLayout;  
  10.   
  11. public class LeftFragment extends Fragment {  
  12.   
  13.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  14.             Bundle savedInstanceState) {  
  15.         View view = inflater.inflate(R.layout.left_fragment, null);  
  16.         LinearLayout userLayout = (LinearLayout) view  
  17.                 .findViewById(R.id.userLayout);  
  18.         userLayout.setOnClickListener(new View.OnClickListener() {  
  19.   
  20.             public void onClick(View v) {  
  21.                 UserFragment user = new UserFragment();  
  22.                 FragmentTransaction ft = getActivity()  
  23.                         .getSupportFragmentManager().beginTransaction();  
  24.                 ft.replace(R.id.center_frame, user);  
  25.                 ft.commit();  
  26.                 ((MainActivity) getActivity()).showLeft();  
  27.             }  
  28.         });  
  29.   
  30.         LinearLayout mainPage = (LinearLayout) view.findViewById(R.id.mainPage);  
  31.         mainPage.setOnClickListener(new View.OnClickListener() {  
  32.   
  33.             @Override  
  34.             

你可能感兴趣的:(Fragment碎片化仿人人)