Android学习笔记(四)之碎片化Fragment实现仿人人客户端的侧边栏

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

Android学习笔记(四)之碎片化Fragment实现仿人人客户端的侧边栏Android学习笔记(四)之碎片化Fragment实现仿人人客户端的侧边栏Android学习笔记(四)之碎片化Fragment实现仿人人客户端的侧边栏

①、自定义一个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. }  

其相应的布局文件代码如下:list.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:background="#fff"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <LinearLayout  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:background="@drawable/banner_unit"  
  12.         android:padding="7dip" >  
  13.   
  14.         <ImageView  
  15.             android:id="@+id/iv_left"  
  16.             android:layout_width="wrap_content"  
  17.             android:layout_height="wrap_content"  
  18.             android:layout_weight="0.1"  
  19.             android:clickable="true"  
  20.             android:src="@drawable/booklist_menu_normal" />  
  21.   
  22.         <TextView  
  23.             android:layout_width="wrap_content"  
  24.             android:layout_height="wrap_content"  
  25.             android:layout_gravity="center_vertical"  
  26.             android:gravity="center_horizontal"  
  27.             android:textColor="#000"  
  28.             android:layout_weight="0.8"  
  29.             android:text="Fragment"  
  30.             android:textSize="17dp" />  
  31.   
  32.         <ImageView  
  33.             android:id="@+id/iv_right"  
  34.              android:clickable="true"  
  35.             android:layout_width="wrap_content"  
  36.             android:layout_height="wrap_content"  
  37.             android:layout_gravity="right"  
  38.             android:layout_weight="0.1"  
  39.             android:src="@drawable/back_normal" />  
  40.     </LinearLayout>  
  41.   
  42.     <ListView  
  43.         android:id="@android:id/list"  
  44.         android:layout_width="fill_parent"  
  45.         android:layout_height="fill_parent" >  
  46.     </ListView>  
  47.   
  48. </LinearLayout>  


⑥、左侧边栏的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.             public void onClick(View v) {  
  35.                 FragmentTransaction ft = getActivity()  
  36.                         .getSupportFragmentManager().beginTransaction();  
  37.                 ft.replace(R.id.center_frame, new SampleListFragment());  
  38.                 ft.commit();  
  39.                 ((MainActivity) getActivity()).showLeft();  
  40.             }  
  41.         });  
  42.         return view;  
  43.     }  
  44.   
  45.     public void onActivityCreated(Bundle savedInstanceState) {  
  46.         super.onActivityCreated(savedInstanceState);  
  47.     }  
  48.   
  49. }  


其对应的布局文件代码如下:left_fragment.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/mlist"  
  4.     android:layout_width="wrap_content"  
  5.     android:layout_height="fill_parent"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <LinearLayout  
  9.         android:id="@+id/mainPage"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:background="@drawable/oper_title2"  
  13.         android:gravity="center"  
  14.         android:orientation="vertical" >  
  15.   
  16.         <TextView  
  17.             android:layout_width="wrap_content"  
  18.             android:layout_height="wrap_content"  
  19.             android:layout_gravity="center"  
  20.             android:gravity="center"  
  21.             android:text="主页"  
  22.             android:textColor="#000"  
  23.             android:textSize="17dip" />  
  24.     </LinearLayout>  
  25.   
  26.     <LinearLayout  
  27.         android:layout_width="wrap_content"  
  28.         android:layout_height="fill_parent"  
  29.         android:background="@drawable/booklist_menu_bg_unit2"  
  30.         android:orientation="vertical" >  
  31.   
  32.         <LinearLayout  
  33.             android:id="@+id/userLayout"  
  34.             android:layout_width="match_parent"  
  35.             android:layout_height="wrap_content"  
  36.             android:layout_weight="0.2"  
  37.             android:clickable="true"  
  38.             android:orientation="vertical"  
  39.             android:padding="5dip" >  
  40.   
  41.             <ImageView  
  42.                 android:layout_width="wrap_content"  
  43.                 android:layout_height="wrap_content"  
  44.                 android:layout_gravity="center"  
  45.                 android:gravity="center"  
  46.                 android:src="@drawable/booklist_menu_user" />  
  47.   
  48.             <TextView  
  49.                 android:layout_width="wrap_content"  
  50.                 android:layout_height="wrap_content"  
  51.                 android:layout_gravity="center"  
  52.                 android:gravity="center"  
  53.                 android:text="用户"  
  54.                 android:textColor="#000" />  
  55.         </LinearLayout>  
  56.   
  57.         <LinearLayout  
  58.             android:layout_width="match_parent"  
  59.             android:layout_height="wrap_content"  
  60.             android:layout_weight="0.2"  
  61.             android:clickable="true"  
  62.             android:orientation="vertical"  
  63.             android:padding="5dip" >  
  64.   
  65.             <ImageView  
  66.                 android:layout_width="wrap_content"  
  67.                 android:layout_height="wrap_content"  
  68.                 android:layout_gravity="center"  
  69.                 android:gravity="center"  
  70.                 android:src="@drawable/booklist_menu_synchronize" />  
  71.   
  72.             <TextView  
  73.                 android:layout_width="wrap_content"  
  74.                 android:layout_height="wrap_content"  
  75.                 android:layout_gravity="center"  
  76.                 android:gravity="center"  
  77.                 android:text="收藏"  
  78.                 android:textColor="#000" />  
  79.         </LinearLayout>  
  80.   
  81.         <LinearLayout  
  82.             android:layout_width="match_parent"  
  83.             android:layout_height="wrap_content"  
  84.             android:layout_weight="0.2"  
  85.             android:clickable="true"  
  86.             android:orientation="vertical"  
  87.             android:padding="5dip" >  
  88.   
  89.             <ImageView  
  90.                 android:layout_width="wrap_content"  
  91.                 android:layout_height="wrap_content"  
  92.                 android:layout_gravity="center"  
  93.                 android:gravity="center"  
  94.                 android:src="@drawable/booklist_menu_std" />  
  95.   
  96.             <TextView  
  97.                 android:layout_width="wrap_content"  
  98.                 android:layout_height="wrap_content"  
  99.                 android:layout_gravity="center"  
  100.                 android:gravity="center"  
  101.                 android:text="标准"  
  102.                 android:textColor="#000" />  
  103.         </LinearLayout>  
  104.   
  105.         <LinearLayout  
  106.             android:layout_width="match_parent"  
  107.             android:layout_height="wrap_content"  
  108.             android:layout_weight="0.2"  
  109.             android:clickable="true"  
  110.             android:orientation="vertical"  
  111.             android:padding="5dip" >  
  112.   
  113.             <ImageView  
  114.                 android:layout_width="wrap_content"  
  115.                 android:layout_height="wrap_content"  
  116.                 android:layout_gravity="center"  
  117.                 android:gravity="center"  
  118.                 android:src="@drawable/booklist_menu_help" />  
  119.   
  120.             <TextView  
  121.                 android:layout_width="wrap_content"  
  122.                 android:layout_height="wrap_content"  
  123.                 android:layout_gravity="center"  
  124.                 android:gravity="center"  
  125.                 android:text="帮助"  
  126.                 android:textColor="#000" />  
  127.         </LinearLayout>  
  128.   
  129.         <LinearLayout  
  130.             android:layout_width="match_parent"  
  131.             android:layout_height="wrap_content"  
  132.             android:layout_weight="0.2"  
  133.             android:clickable="true"  
  134.             android:orientation="vertical"  
  135.             android:padding="5dip" >  
  136.   
  137.             <ImageView  
  138.                 android:layout_width="wrap_content"  
  139.                 android:layout_height="wrap_content"  
  140.                 android:layout_gravity="center"  
  141.                 android:gravity="center"  
  142.                 android:src="@drawable/booklist_menu_about" />  
  143.   
  144.             <TextView  
  145.                 android:layout_width="wrap_content"  
  146.                 android:layout_height="wrap_content"  
  147.                 android:layout_gravity="center"  
  148.                 android:gravity="center"  
  149.                 android:text="关于"  
  150.                 android:textColor="#000" />  
  151.         </LinearLayout>  
  152.     </LinearLayout>  
  153.   
  154. </LinearLayout>  


⑦、右侧边栏的View用RightFragment替代,RightFragment代码如下:

[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.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8.   
  9. public class RightFragment extends Fragment {  
  10.   
  11.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  12.             Bundle savedInstanceState) {  
  13.         View view = inflater.inflate(R.layout.right_fragment, null);  
  14.         return view;  
  15.     }  
  16.   
  17.     public void onActivityCreated(Bundle savedInstanceState) {  
  18.         super.onActivityCreated(savedInstanceState);  
  19.   
  20.     }  
  21. }  


其对应的布局文件代码如下:right_fragment.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <LinearLayout  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="wrap_content"  
  10.         android:background="@drawable/oper_title"  
  11.         android:gravity="center"  
  12.         android:orientation="vertical" >  
  13.   
  14.         <TextView  
  15.             android:layout_width="wrap_content"  
  16.             android:layout_height="wrap_content"  
  17.             android:layout_gravity="center"  
  18.             android:gravity="center"  
  19.             android:text="服   务"  
  20.             android:textColor="#000"  
  21.             android:textSize="17dip" />  
  22.     </LinearLayout>  
  23.   
  24.     <ScrollView  
  25.         android:layout_width="wrap_content"  
  26.         android:layout_height="fill_parent"  
  27.         android:background="@drawable/booklist_menu_bg_unit" >  
  28.   
  29.         <LinearLayout  
  30.             android:layout_width="wrap_content"  
  31.             android:layout_height="fill_parent"  
  32.             android:orientation="vertical"  
  33.             android:padding="5dip" >  
  34.   
  35.             <LinearLayout  
  36.                 android:id="@+id/llr_energy_management"  
  37.                 android:layout_width="match_parent"  
  38.                 android:layout_height="60dp"  
  39.                 android:clickable="true"  
  40.                 android:onClick="llronclick" >  
  41.   
  42.                 <ImageView  
  43.                     android:layout_width="wrap_content"  
  44.                     android:layout_height="wrap_content"  
  45.                     android:layout_gravity="center"  
  46.                     android:layout_weight="0.1"  
  47.                     android:src="@drawable/lxqg" />  
  48.   
  49.                 <TextView  
  50.                     android:layout_width="wrap_content"  
  51.                     android:layout_height="wrap_content"  
  52.                     android:layout_gravity="center"  
  53.                     android:layout_weight="0.8"  
  54.                     android:text="能源管理"  
  55.                     android:textColor="#000" />  
  56.   
  57.                 <ImageView  
  58.                     android:layout_width="wrap_content"  
  59.                     android:layout_height="wrap_content"  
  60.                     android:layout_gravity="center"  
  61.                     android:layout_weight="0.1"  
  62.                     android:gravity="center"  
  63.                     android:src="@drawable/arrow_to_right" />  
  64.             </LinearLayout>  
  65.   
  66.             <ImageView  
  67.                 android:layout_width="fill_parent"  
  68.                 android:layout_height="fill_parent"  
  69.                 android:layout_gravity="center"  
  70.                 android:src="@drawable/line_read_option" />  
  71.   
  72.             <LinearLayout  
  73.                 android:id="@+id/llr_hr_management"  
  74.                 android:layout_width="match_parent"  
  75.                 android:layout_height="60dp"  
  76.                 android:clickable="true"  
  77.                 android:onClick="llronclick" >  
  78.   
  79.                 <ImageView  
  80.                     android:layout_width="wrap_content"  
  81.                     android:layout_height="wrap_content"  
  82.                     android:layout_gravity="center"  
  83.                     android:layout_weight="0.1"  
  84.                     android:src="@drawable/lxqg" />  
  85.   
  86.                 <TextView  
  87.                     android:layout_width="wrap_content"  
  88.                     android:layout_height="wrap_content"  
  89.                     android:layout_gravity="center"  
  90.                     android:layout_weight="0.8"  
  91.                     android:text="人力管理"  
  92.                     android:textColor="#000" />  
  93.   
  94.                 <ImageView  
  95.                     android:layout_width="wrap_content"  
  96.                     android:layout_height="wrap_content"  
  97.                     android:layout_gravity="center"  
  98.                     android:layout_weight="0.1"  
  99.                     android:gravity="center"  
  100.                     android:src="@drawable/arrow_to_right" />  
  101.             </LinearLayout>  
  102.   
  103.             <ImageView  
  104.                 android:layout_width="fill_parent"  
  105.                 android:layout_height="fill_parent"  
  106.                 android:layout_gravity="center"  
  107.                 android:src="@drawable/line_read_option" />  
  108.   
  109.             <LinearLayout  
  110.                 android:id="@+id/llr_business_management"  
  111.                 android:layout_width="match_parent"  
  112.                 android:layout_height="60dp"  
  113.                 android:clickable="true"  
  114.                 android:onClick="llronclick" >  
  115.   
  116.                 <ImageView  
  117.                     android:layout_width="wrap_content"  
  118.                     android:layout_height="wrap_content"  
  119.                     android:layout_gravity="center"  
  120.                     android:layout_weight="0.1"  
  121.                     android:src="@drawable/lxqg" />  
  122.   
  123.                 <TextView  
  124.                     android:layout_width="wrap_content"  
  125.                     android:layout_height="wrap_content"  
  126.                     android:layout_gravity="center"  
  127.                     android:layout_weight="0.8"  
  128.                     android:text="商务管理"  
  129.                     android:textColor="#000" />  
  130.   
  131.                 <ImageView  
  132.                     android:layout_width="wrap_content"  
  133.                     android:layout_height="wrap_content"  
  134.                     android:layout_gravity="center"  
  135.                     android:layout_weight="0.1"  
  136.                     android:gravity="center"  
  137.                     android:src="@drawable/arrow_to_right" />  
  138.             </LinearLayout>  
  139.   
  140.             <ImageView  
  141.                 android:layout_width="fill_parent"  
  142.                 android:layout_height="fill_parent"  
  143.                 android:layout_gravity="center"  
  144.                 android:src="@drawable/line_read_option" />  
  145.   
  146.             <LinearLayout  
  147.                 android:id="@+id/llr_financial_management"  
  148.                 android:layout_width="match_parent"  
  149.                 android:layout_height="60dp"  
  150.                 android:clickable="true"  
  151.                 android:onClick="llronclick" >  
  152.   
  153.                 <ImageView  
  154.                     android:layout_width="wrap_content"  
  155.                     android:layout_height="wrap_content"  
  156.                     android:layout_gravity="center"  
  157.                     android:layout_weight="0.1"  
  158.                     android:src="@drawable/lxqg" />  
  159.   
  160.                 <TextView  
  161.                     android:layout_width="wrap_content"  
  162.                     android:layout_height="wrap_content"  
  163.                     android:layout_gravity="center"  
  164.                     android:layout_weight="0.8"  
  165.                     android:text="金融管理"  
  166.                     android:textColor="#000" />  
  167.   
  168.                 <ImageView  
  169.                     android:layout_width="wrap_content"  
  170.                     android:layout_height="wrap_content"  
  171.                     android:layout_gravity="center"  
  172.                     android:layout_weight="0.1"  
  173.                     android:gravity="center"  
  174.                     android:src="@drawable/arrow_to_right" />  
  175.             </LinearLayout>  
  176.   
  177.             <ImageView  
  178.                 android:layout_width="fill_parent"  
  179.                 android:layout_height="fill_parent"  
  180.                 android:layout_gravity="center"  
  181.                 android:src="@drawable/line_read_option" />  
  182.   
  183.             <LinearLayout  
  184.                 android:id="@+id/llr_purchasing_management"  
  185.                 android:layout_width="match_parent"  
  186.                 android:layout_height="60dp"  
  187.                 android:clickable="true"  
  188.                 android:onClick="llronclick" >  
  189.   
  190.                 <ImageView  
  191.                     android:layout_width="wrap_content"  
  192.                     android:layout_height="wrap_content"  
  193.                     android:layout_gravity="center"  
  194.                     android:layout_weight="0.1"  
  195.                     android:src="@drawable/lxqg" />  
  196.   
  197.                 <TextView  
  198.                     android:layout_width="wrap_content"  
  199.                     android:layout_height="wrap_content"  
  200.                     android:layout_gravity="center"  
  201.                     android:layout_weight="0.8"  
  202.                     android:text="采购管理"  
  203.                     android:textColor="#000" />  
  204.   
  205.                 <ImageView  
  206.                     android:layout_width="wrap_content"  
  207.                     android:layout_height="wrap_content"  
  208.                     android:layout_gravity="center"  
  209.                     android:layout_weight="0.1"  
  210.                     android:gravity="center"  
  211.                     android:src="@drawable/arrow_to_right" />  
  212.             </LinearLayout>  
  213.   
  214.             <ImageView  
  215.                 android:layout_width="fill_parent"  
  216.                 android:layout_height="fill_parent"  
  217.                 android:layout_gravity="center"  
  218.                 android:src="@drawable/line_read_option" />  
  219.   
  220.             <LinearLayout  
  221.                 android:id="@+id/llr_supply_management"  
  222.                 android:layout_width="match_parent"  
  223.                 android:layout_height="60dp"  
  224.                 android:clickable="true"  
  225.                 android:onClick="llronclick" >  
  226.   
  227.                 <ImageView  
  228.                     android:layout_width="wrap_content"  
  229.                     android:layout_height="wrap_content"  
  230.                     android:layout_gravity="center"  
  231.                     android:layout_weight="0.1"  
  232.                     android:src="@drawable/lxqg" />  
  233.   
  234.                 <TextView  
  235.                     android:layout_width="wrap_content"  
  236.                     android:layout_height="wrap_content"  
  237.                     android:layout_gravity="center"  
  238.                     android:layout_weight="0.8"  
  239.                     android:text="供应管理"  
  240.                     android:textColor="#000" />  
  241.   
  242.                 <ImageView  
  243.                     android:layout_width="wrap_content"  
  244.                     android:layout_height="wrap_content"  
  245.                     android:layout_gravity="center"  
  246.                     android:layout_weight="0.1"  
  247.                     android:gravity="center"  
  248.                     android:src="@drawable/arrow_to_right" />  
  249.             </LinearLayout>  
  250.   
  251.             <ImageView  
  252.                 android:layout_width="fill_parent"  
  253.                 android:layout_height="fill_parent"  
  254.                 android:layout_gravity="center"  
  255.                 android:src="@drawable/line_read_option" />  
  256.   
  257.             <LinearLayout  
  258.                 android:id="@+id/llr_project_management"  
  259.                 android:layout_width="match_parent"  
  260.                 android:layout_height="60dp"  
  261.                 android:clickable="true"  
  262.                 android:onClick="llronclick" >  
  263.   
  264.                 <ImageView  
  265.                     android:layout_width="wrap_content"  
  266.                     android:layout_height="wrap_content"  
  267.                     android:layout_gravity="center"  
  268.                     android:layout_weight="0.1"  
  269.                     android:src="@drawable/lxqg" />  
  270.   
  271.                 <TextView  
  272.                     android:layout_width="wrap_content"  
  273.                     android:layout_height="wrap_content"  
  274.                     android:layout_gravity="center"  
  275.                     android:layout_weight="0.8"  
  276.                     android:text="项目管理"  
  277.                     android:textColor="#000" />  
  278.   
  279.                 <ImageView  
  280.                     android:layout_width="wrap_content"  
  281.                     android:layout_height="wrap_content"  
  282.                     android:layout_gravity="center"  
  283.                     android:layout_weight="0.1"  
  284.                     android:gravity="center"  
  285.                     android:src="@drawable/arrow_to_right" />  
  286.             </LinearLayout>  
  287.   
  288.             <ImageView  
  289.                 android:layout_width="fill_parent"  
  290.                 android:layout_height="fill_parent"  
  291.                 android:layout_gravity="center"  
  292.                 android:src="@drawable/line_read_option" />  
  293.   
  294.             <Button  
  295.                 android:layout_width="wrap_content"  
  296.                 android:layout_height="wrap_content"  
  297.                 android:text="说明我是宽度自适应的..." />  
  298.         </LinearLayout>  
  299.     </ScrollView>  
  300.   
  301. </LinearLayout>  


⑧、在左侧边栏中有一个点击事件,点击用户,进入用户界面,这里的用户界面也是一个Fragment,点击事件的具体代码在⑥中已经有了,现在我把用户界面的Fragment代码贴出来:UserFragment.java:

[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.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8. import android.widget.ImageView;  
  9.   
  10. public class UserFragment extends Fragment {  
  11.     @Override  
  12.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  13.             Bundle savedInstanceState) {  
  14.         View view = inflater.inflate(R.layout.user, null);  
  15.         ImageView left = (ImageView) view.findViewById(R.id.iv_user_left);  
  16.         left.setOnClickListener(new View.OnClickListener() {  
  17.   
  18.             public void onClick(View v) {  
  19.                 ((MainActivity) getActivity()).showLeft();  
  20.             }  
  21.         });  
  22.         return view;  
  23.     }  
  24.   
  25.     public void onActivityCreated(Bundle savedInstanceState) {  
  26.         super.onActivityCreated(savedInstanceState);  
  27.   
  28.     }  
  29. }  


其对应的布局代码如下:user.xml:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="#ffffff"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <LinearLayout  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:background="@drawable/banner_unit"  
  12.         android:padding="7dip" >  
  13.   
  14.         <ImageView  
  15.             android:id="@+id/iv_user_left"  
  16.             android:layout_width="wrap_content"  
  17.             android:layout_height="wrap_content"  
  18.             android:layout_weight="0.1"  
  19.             android:clickable="true"  
  20.             android:src="@drawable/booklist_menu_normal" />  
  21.   
  22.         <TextView  
  23.             android:layout_width="wrap_content"  
  24.             android:layout_height="wrap_content"  
  25.             android:layout_gravity="center_vertical"  
  26.             android:layout_weight="0.8"  
  27.             android:gravity="center_horizontal"  
  28.             android:text="Fragment"  
  29.             android:textColor="#000"  
  30.             android:textSize="17dp" />  
  31.   
  32.         <ImageView  
  33.             android:id="@+id/iv_right"  
  34.             android:layout_width="wrap_content"  
  35.             android:layout_height="wrap_content"  
  36.             android:layout_gravity="right"  
  37.             android:layout_weight="0.1"  
  38.             android:clickable="true"  
  39.             android:src="@drawable/back_normal" />  
  40.     </LinearLayout>  
  41.   
  42.     <TextView  
  43.         android:layout_width="fill_parent"  
  44.         android:layout_height="fill_parent"  
  45.         android:gravity="center"  
  46.         android:text="用户管理"  
  47.         android:textColor="#000000"  
  48.         android:textSize="24sp" />  
  49.   
  50. </LinearLayout>  


⑨、其他不重要的代码如下:

DetailsActivity.java:

[java] view plain copy
  1. package net.loonggg.fragment;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.   
  6. public class DetailsActivity extends Activity {  
  7.   
  8.     protected void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.details);  
  11.   
  12.     }  
  13. }  


其对应的布局文件代码如下:details.xml:

[html] view plain copy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="fill_parent"  
  3.     android:layout_height="fill_parent"  
  4.     android:background="#fff"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <ImageView  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="200dp"  
  10.         android:scaleType="fitXY"  
  11.         android:src="@drawable/p1" />  
  12.   
  13. </LinearLayout>  


还有就是string.xml的代码如下:

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.   
  4.     <string name="app_name">碎片化侧边栏</string>  
  5.     <string name="action_settings">Settings</string>  
  6.     <string name="title1">这种导弹的平均航速为5倍音速</string>  
  7.     <string name="title2">这种导弹的平均航速为5倍音速</string>  
  8.     <string name="title3">这种导弹的平均航速为5倍音速</string>  
  9.     <string name="title4">这种导弹的平均航速为5倍音速</string>  
  10.     <string name="title5">这种导弹的平均航速为5倍音速</string>  
  11.     <string name="title6">这种导弹的平均航速为5倍音速</string>  
  12.     <string name="title7">这种导弹的平均航速为5倍音速</string>  
  13.     <string name="test">美国《空军》杂志、西班牙《世界报》等媒体报道,美军计划在今年内多次试射高超音速导弹,从而将其作为威慑中俄的强力武器。有外媒指出,解放军已开发出可拦截高速导弹的防控系统,而且有潜力进一步开发拦截高超音速导弹的防空武器。  
  14.   
  15.   
  16. 美 国《空军》杂志报道,美军将在2013年继续试射高超音速巡航导弹,这种导弹的平均航速为5倍音速,最高瞬时航速达到7倍音速。对于目前全球所有的防卫系 统来说,它都是无法防御的导弹。美国《防务新闻》更是声称,美军的“高超音速攻击时代”即将来临,目前各国军队尚无能力对这种高速攻击目标进行有效拦截, 任何导弹防御系统在它面前都形同虚设。  
  17.   
  18. 西班牙《世界报》报道,从2013年3月到12月,美军可能进行3次重要的实验,如果一切顺利,美军可能于2014年尝试装备少量的高超音速导弹,这种导弹有望在未来5年内形成战斗力。  
  19.   
  20. 报道认为,美军高超音速导弹所形成的威胁以及对世界格局的影响难以估量。美国可能在一些“敏感区域”部署这种导弹,例如东亚地区,而朝鲜和伊朗的核设施也可能成为它的攻击目标。报道强调,美军高超音速导弹的主要作用是对其他军事大国实施威慑,主要是中国和俄罗斯。  
  21.   
  22. 据 俄罗斯《军工信使》周刊指出,解放军在防范超音速导弹攻击方面“已经追赶上来”,中国某国防工业公开发的代号为LD-2000的陆基防空系统,已经被证实 具备实战能力。这种防空系统可为高价值目标,包括指挥所、弹道导弹发射装置等提供保护。LD-2000防空系统发射的导弹拦截高速飞行的导弹和飞机,尤其 擅长对付雷达反射面积较小的隐身巡航导弹及高速巡航导弹。报道揣测,它可以准确拦截飞行速度超过两倍音速的超音速导弹。通过改进其控制软件,该系统还可用 来拦截高速火箭弹和迫击炮弹。  
  23.   
  24. 报道称,LD-2000系统可加装在军用卡车底盘上,从而实现机动部署,在需要它的地方构建防范超音速导弹的密集导弹阵。这种导弹集群的火力可与美军著名的“密集阵”(专门防御来袭空中目标的防空导弹集群)媲美。  
  25.   
  26. 报道称,LD-2000是一款针对出口市场的产品,解放军肯定同步开发了自用型号,而且其性能必然优于LD-2000,应该可以防范速度更快的来袭目标,例如航速达到三四倍音速的巡航导弹。报道认为,这表明解放军有能力开发用来对付美军高超音速导弹的防御系统。</string>  
  27.   
  28. </resources>  


到这里就基本完成了。可能你现在没有看懂,我把源码放出来,供大家参考。源代码下载地址如下: 源代码

你可能感兴趣的:(Android学习)