大家好,这是一个简单的拍照功能,很简单的界面,一个显示图像区域SurfaceView一个“拍照”按钮。直接上代码!

1、CameraDemoActivity.java(主界面)

  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">package</span> org.winplus.camera;  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> java.io.File;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> java.io.FileOutputStream;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> java.io.IOException;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> java.util.Date;  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.app.Activity;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.content.pm.ActivityInfo;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.graphics.PixelFormat;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.hardware.Camera;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.os.AsyncTask;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.os.Bundle;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.os.Environment;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.text.format.DateFormat;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.util.Log;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.view.KeyEvent;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.view.SurfaceHolder;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.view.SurfaceView;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.view.View;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.view.Window;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.view.View.OnClickListener;  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">import</span> android.widget.Button;  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">class</span> CameraDemoActivity <span class="keyword" style="font-weight: bold; color: #0000ff;">extends</span> Activity{  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">final</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">static</span> String TAG = <span class="string" style="color: #009900;">&#8220;CameraActivity&#8221;</span>;  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> SurfaceView surfaceView;  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> SurfaceHolder surfaceHolder;  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> Camera camera;  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> File picture;  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> Button btnSave;  </span>
  
  - <span style="color: black;">      </span>
  
  - <span style="color: black;">    <span class="annotation" style="color: #646464;">@Override</span>  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> onCreate(Bundle savedInstanceState) {  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">super</span>.onCreate(savedInstanceState);  </span>
  
  - <span style="color: black;">        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">this</span>.requestWindowFeature(Window.FEATURE_NO_TITLE);  </span>
  
  - <span style="color: black;">        setContentView(R.layout.main);  </span>
  
  - <span style="color: black;">        setupViews();  </span>
  
  - <span style="color: black;">    }  </span>
  
  - <span style="color: black;">      </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> setupViews(){  </span>
  
  - <span style="color: black;">        surfaceView = (SurfaceView) findViewById(R.id.camera_preview); <span class="comment" style="color: #999999;">// Camera interface to instantiate components</span>  </span>
  
  - <span style="color: black;">        surfaceHolder = surfaceView.getHolder(); <span class="comment" style="color: #999999;">// Camera interface to instantiate components</span>  </span>
  
  - <span style="color: black;">        surfaceHolder.addCallback(surfaceCallback); <span class="comment" style="color: #999999;">// Add a callback for the SurfaceHolder</span>  </span>
  
  - <span style="color: black;">        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  </span>
  
  - <span style="color: black;">          </span>
  
  - <span style="color: black;">        btnSave = (Button) findViewById(R.id.save_pic);  </span>
  
  - <span style="color: black;">          </span>
  
  - <span style="color: black;">        btnSave.setOnClickListener(<span class="keyword" style="font-weight: bold; color: #0000ff;">new</span> OnClickListener() {  </span>
  
  - <span style="color: black;">              </span>
  
  - <span style="color: black;">            <span class="annotation" style="color: #646464;">@Override</span>  </span>
  
  - <span style="color: black;">            <span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> onClick(View v) {  </span>
  
  - <span style="color: black;">                takePic();  </span>
  
  - <span style="color: black;">            }  </span>
  
  - <span style="color: black;">        });  </span>
  
  - <span style="color: black;">    }  </span>
  
  - <span style="color: black;">      </span>
  
  - <span style="color: black;">      </span>
  
  - <span style="color: black;">    <span class="annotation" style="color: #646464;">@Override</span>  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">boolean</span> onKeyDown(<span class="keyword" style="font-weight: bold; color: #0000ff;">int</span> keyCode, KeyEvent event) {  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">if</span> (keyCode == KeyEvent.KEYCODE_CAMERA  </span>
  
  - <span style="color: black;">                || keyCode == KeyEvent.KEYCODE_SEARCH) {  </span>
  
  - <span style="color: black;">            takePic();  </span>
  
  - <span style="color: black;">            <span class="keyword" style="font-weight: bold; color: #0000ff;">return</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">true</span>;  </span>
  
  - <span style="color: black;">        }  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">return</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">super</span>.onKeyDown(keyCode, event);  </span>
  
  - <span style="color: black;">    }  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">private</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> takePic() {  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">        camera.stopPreview();<span class="comment" style="color: #999999;">// stop the preview</span>  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">        camera.takePicture(<span class="keyword" style="font-weight: bold; color: #0000ff;">null</span>, <span class="keyword" style="font-weight: bold; color: #0000ff;">null</span>, pictureCallback); <span class="comment" style="color: #999999;">// picture</span>  </span>
  
  - <span style="color: black;">    }  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">    <span class="comment" style="color: #999999;">// Photo call back</span>  </span>
  
  - <span style="color: black;">    Camera.PictureCallback pictureCallback = <span class="keyword" style="font-weight: bold; color: #0000ff;">new</span> Camera.PictureCallback() {  </span>
  
  - <span style="color: black;">        <span class="comment" style="color: #999999;">//@Override</span>  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> onPictureTaken(<span class="keyword" style="font-weight: bold; color: #0000ff;">byte</span>[] data, Camera camera) {  </span>
  
  - <span style="color: black;">            <span class="keyword" style="font-weight: bold; color: #0000ff;">new</span> SavePictureTask().execute(data);  </span>
  
  - <span style="color: black;">            camera.startPreview();  </span>
  
  - <span style="color: black;">        }  </span>
  
  - <span style="color: black;">    };  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">    <span class="comment" style="color: #999999;">// save pic</span>  </span>
  
  - <span style="color: black;">    <span class="keyword" style="font-weight: bold; color: #0000ff;">class</span> SavePictureTask <span class="keyword" style="font-weight: bold; color: #0000ff;">extends</span> AsyncTask<<span class="keyword" style="font-weight: bold; color: #0000ff;">byte</span>[], String, String> {  </span>
  
  - <span style="color: black;">        <span class="annotation" style="color: #646464;">@Override</span>  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">protected</span> String doInBackground(<span class="keyword" style="font-weight: bold; color: #0000ff;">byte</span>[]&#8230; params) {  </span>
  
  - <span style="color: black;">            String fname = DateFormat.format(<span class="string" style="color: #009900;">&#8220;yyyyMMddhhmmss&#8221;</span>, <span class="keyword" style="font-weight: bold; color: #0000ff;">new</span> Date()).toString()+<span class="string" style="color: #009900;">&#8220;.jpg&#8221;</span>;  </span>
  
  - <span style="color: black;">              </span>
  
  - <span style="color: black;">            Log.i(TAG, <span class="string" style="color: #009900;">&#8220;fname=&#8221;</span>+fname+<span class="string" style="color: #009900;">&#8220;;dir=&#8221;</span>+Environment.getExternalStorageDirectory());  </span>
  
  - <span style="color: black;">            <span class="comment" style="color: #999999;">//picture = new File(Environment.getExternalStorageDirectory(),fname);// create file</span>  </span>
  
  - <span style="color: black;">              </span>
  
  - <span style="color: black;">            picture = <span class="keyword" style="font-weight: bold; color: #0000ff;">new</span> File(Environment.getExternalStorageDirectory()+<span class="string" style="color: #009900;">&#8220;/&#8221;</span>+fname);  </span>
  
  - <span style="color: black;">              </span>
  
  - <span style="color: black;">            <span class="keyword" style="font-weight: bold; color: #0000ff;">try</span> {  </span>
  
  - <span style="color: black;">                FileOutputStream fos = <span class="keyword" style="font-weight: bold; color: #0000ff;">new</span> FileOutputStream(picture.getPath()); <span class="comment" style="color: #999999;">// Get file output stream</span>  </span>
  
  - <span style="color: black;">                fos.write(params[<span class="number" style="color: #c00000;"></span>]); <span class="comment" style="color: #999999;">// Written to the file</span>  </span>
  
  - <span style="color: black;">                fos.close();   </span>
  
  - <span style="color: black;">            } <span class="keyword" style="font-weight: bold; color: #0000ff;">catch</span> (Exception e) {  </span>
  
  - <span style="color: black;">                e.printStackTrace();  </span>
  
  - <span style="color: black;">            }  </span>
  
  - <span style="color: black;">            <span class="keyword" style="font-weight: bold; color: #0000ff;">return</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">null</span>;  </span>
  
  - <span style="color: black;">        }  </span>
  
  - <span style="color: black;">    }  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">    <span class="comment" style="color: #999999;">// SurfaceHodler Callback handle to open the camera, off camera and photo size changes</span>  </span>
  
  - <span style="color: black;">    SurfaceHolder.Callback surfaceCallback = <span class="keyword" style="font-weight: bold; color: #0000ff;">new</span> SurfaceHolder.Callback() {  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> surfaceCreated(SurfaceHolder holder) {  </span>
  
  - <span style="color: black;">            Log.i(TAG, <span class="string" style="color: #009900;">&#8220;surfaceCallback====&#8221;</span>);  </span>
  
  - <span style="color: black;">            camera = Camera.open(); <span class="comment" style="color: #999999;">// Turn on the camera</span>  </span>
  
  - <span style="color: black;">            <span class="keyword" style="font-weight: bold; color: #0000ff;">try</span> {  </span>
  
  - <span style="color: black;">                camera.setPreviewDisplay(holder); <span class="comment" style="color: #999999;">// Set Preview</span>  </span>
  
  - <span style="color: black;">            } <span class="keyword" style="font-weight: bold; color: #0000ff;">catch</span> (IOException e) {  </span>
  
  - <span style="color: black;">                camera.release();<span class="comment" style="color: #999999;">// release camera</span>  </span>
  
  - <span style="color: black;">                camera = <span class="keyword" style="font-weight: bold; color: #0000ff;">null</span>;  </span>
  
  - <span style="color: black;">            }  </span>
  
  - <span style="color: black;">        }  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> surfaceChanged(SurfaceHolder holder, <span class="keyword" style="font-weight: bold; color: #0000ff;">int</span> format, <span class="keyword" style="font-weight: bold; color: #0000ff;">int</span> width,  </span>
  
  - <span style="color: black;">                <span class="keyword" style="font-weight: bold; color: #0000ff;">int</span> height) {  </span>
  
  - <span style="color: black;">            Log.i(TAG,<span class="string" style="color: #009900;">&#8220;====surfaceChanged&#8221;</span>);  </span>
  
  - <span style="color: black;">            Camera.Parameters parameters = camera.getParameters(); <span class="comment" style="color: #999999;">// Camera parameters to obtain</span>  </span>
  
  - <span style="color: black;">            parameters.setPictureFormat(PixelFormat.JPEG);<span class="comment" style="color: #999999;">// Setting Picture Format</span>  </span>
  
  - <span style="color: black;"><span class="comment" style="color: #999999;">//          parameters.set(&#8220;rotation&#8221;, 180); // Arbitrary rotation</span>  </span>
  
  - <span style="color: black;">            camera.setDisplayOrientation(<span class="number" style="color: #c00000;"></span>);  </span>
  
  - <span style="color: black;"><span class="comment" style="color: #999999;">//          parameters.setPreviewSize(400, 300); // Set Photo Size</span>  </span>
  
  - <span style="color: black;">            camera.setParameters(parameters); <span class="comment" style="color: #999999;">// Setting camera parameters</span>  </span>
  
  - <span style="color: black;">            camera.startPreview(); <span class="comment" style="color: #999999;">// Start Preview</span>  </span>
  
  - <span style="color: black;">        }  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">        <span class="keyword" style="font-weight: bold; color: #0000ff;">public</span> <span class="keyword" style="font-weight: bold; color: #0000ff;">void</span> surfaceDestroyed(SurfaceHolder holder) {  </span>
  
  - <span style="color: black;">            Log.i(TAG,<span class="string" style="color: #009900;">&#8220;====surfaceDestroyed&#8221;</span>);  </span>
  
  - <span style="color: black;">            camera.stopPreview();<span class="comment" style="color: #999999;">// stop preview</span>  </span>
  
  - <span style="color: black;">            camera.release(); <span class="comment" style="color: #999999;">// Release camera resources</span>  </span>
  
  - <span style="color: black;">            camera = <span class="keyword" style="font-weight: bold; color: #0000ff;">null</span>;  </span>
  
  - <span style="color: black;">        }  </span>
  
  - <span style="color: black;">    };  </span>
  
  - <span style="color: black;">}  </span>
<span style="color: #362e2b;">2、main.xml(布局文件)</span>
  - <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"><?</span><span class="tag-name" style="font-weight: bold; color: #993300;">xml</span> <span class="attribute" style="color: red;">version</span>=<span class="attribute-value" style="color: blue;">&#8220;1.0&#8221;</span> <span class="attribute" style="color: red;">encoding</span>=<span class="attribute-value" style="color: blue;">&#8220;utf-8&#8221;</span><span class="tag" style="font-weight: bold; color: #993300;">?></span>  </span>
  
  - <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">LinearLayout</span> <span class="attribute" style="color: red;">xmlns:android</span>=<span class="attribute-value" style="color: blue;">&#8220;http://schemas.android.com/apk/res/android&#8221;</span>  </span>
  
  - <span style="color: black;">    <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">&#8220;fill_parent&#8221;</span>  </span>
  
  - <span style="color: black;">    <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">&#8220;fill_parent&#8221;</span>  </span>
  
  - <span style="color: black;">    <span class="attribute" style="color: red;">android:orientation</span>=<span class="attribute-value" style="color: blue;">&#8220;vertical&#8221;</span> <span class="tag" style="font-weight: bold; color: #993300;">></span>  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">    <span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">android.view.SurfaceView</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:id</span>=<span class="attribute-value" style="color: blue;">&#8220;@+id/camera_preview&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">&#8220;800dip&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">&#8220;600dip&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_alignParentTop</span>=<span class="attribute-value" style="color: blue;">&#8220;true&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_centerInParent</span>=<span class="attribute-value" style="color: blue;">&#8220;true&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_gravity</span>=<span class="attribute-value" style="color: blue;">&#8220;center_vertical|center_horizontal&#8221;</span> <span class="tag" style="font-weight: bold; color: #993300;">/></span>  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;">    <span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">Button</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:id</span>=<span class="attribute-value" style="color: blue;">&#8220;@+id/save_pic&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_width</span>=<span class="attribute-value" style="color: blue;">&#8220;fill_parent&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:layout_height</span>=<span class="attribute-value" style="color: blue;">&#8220;wrap_content&#8221;</span>  </span>
  
  - <span style="color: black;">        <span class="attribute" style="color: red;">android:text</span>=<span class="attribute-value" style="color: blue;">&#8220;@string/txt_save&#8221;</span> <span class="tag" style="font-weight: bold; color: #993300;">/></span>  </span>
  
  - <span style="color: black;">  </span>
  
  - <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"></</span><span class="tag-name" style="font-weight: bold; color: #993300;">LinearLayout</span><span class="tag" style="font-weight: bold; color: #993300;">></span>  </span>
<br style="color: #362e2b;" /><span style="color: #362e2b;">3、别忘了添加权限:</span>







  <div class="dp-highlighter bg_html" style="color: #362e2b;">
    
      - <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">uses-permission</span> <span class="attribute" style="color: red;">android:name</span>=<span class="attribute-value" style="color: blue;">&#8220;android.permission.CAMERA&#8221;</span> <span class="tag" style="font-weight: bold; color: #993300;">/></span>  </span>
      
      - <span style="color: black;">  </span>
      
      - <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">uses-feature</span> <span class="attribute" style="color: red;">android:name</span>=<span class="attribute-value" style="color: blue;">&#8220;android.hardware.camera&#8221;</span> <span class="tag" style="font-weight: bold; color: #993300;">/></span>  </span>
      
      - <span style="color: black;"><span class="tag" style="font-weight: bold; color: #993300;"><</span><span class="tag-name" style="font-weight: bold; color: #993300;">uses-feature</span> <span class="attribute" style="color: red;">android:name</span>=<span class="attribute-value" style="color: blue;">&#8220;android.hardware.camera.autofocus&#8221;</span> <span class="attribute" style="color: red;">android:required</span>=<span class="attribute-value" style="color: blue;">&#8220;false&#8221;</span> <span class="tag" style="font-weight: bold; color: #993300;">/></span>  </span>
      
    
  </div>
  
  <div class="dp-highlighter bg_html" style="color: #362e2b;">
    
      - <span style="color: black;">  </span>
      
    
  </div>
  
  

    [源码下载==》](http://download.csdn.net/detail/tangcheng_ok/3874071)
  

  
  

    原创文章,转载请注明出处:http://www.blog.csdn.net/tangcheng_ok