2012-07-09 35 views
0

嘿,我想通過保存菜單將用戶在圖像保存API中保存的圖像保存。
下面是活動類`在android中保存指紋圖像時應用程序停止

public int mImageCount = 0; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button res = (Button) findViewById(R.id.reset); 
     res.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method 
       TouchEventView touchView = (TouchEventView) findViewById(R.id.mydrawview1); 
       touchView.clear(); 

      } 
     }); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu_name, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.save: 
      save(); 
      return true; 
     case R.id.open: 
      open(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 

     } 

    } 

    public void save() { 
     TouchEventView touchview = (TouchEventView) findViewById(R.id.mydrawview1); 

     File myDir = new File("/sdcard/saved_images"); 
     if (!myDir.exists()) 
      myDir.mkdirs(); 
     mImageCount++; 
     String fname = "image-" + mImageCount + ".jpg"; 
     File file = new File(myDir, fname); 
     if (file.exists()) 
      file.delete(); 
     touchview.saveAsJpg(file); 
     Toast.makeText(this, "Image has been saved", 7000).show(); 
    } 

    public void open() { 
     TextView tv = new TextView(this); 
     tv.setText("Hello, Android"); 
     setContentView(tv); 

    } 

} 

` 下面是View類

 public class TouchEventView extends View { 
    private static Bitmap mBitmap; 

    private Paint paint = new Paint(); 
    private Path path = new Path(); 
    private Canvas mCanvas; 
    private Path mPath; 
    private Paint mBitmapPaint; 

    public TouchEventView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     paint.setAntiAlias(true); 
     paint.setColor(Color.WHITE); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setStrokeJoin(Paint.Join.ROUND); 
     paint.setStrokeWidth(5f); 
     mBitmap = Bitmap.createBitmap(320, 480, Bitmap.Config.ARGB_8888); 
     mCanvas = new Canvas(mBitmap); 
     mPath = new Path(); 
     mBitmapPaint = new Paint(Paint.DITHER_FLAG); 

    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawColor(0xFFAAAAAA); 

     canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 

     canvas.drawPath(path, paint); 
    } 

    public void clear() { 
     path = new Path(); 
     invalidate(); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     float eventX = event.getX(); 
     float eventY = event.getY(); 

     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      path.moveTo(eventX, eventY); 

      return true; 
     case MotionEvent.ACTION_MOVE: 
      path.lineTo(eventX, eventY); 
      break; 
     case MotionEvent.ACTION_UP: 
      // nothing to do 
      break; 
     default: 
      return false; 
     } 

     // Schedules a repaint. 
     invalidate(); 
     return true; 
    } 

    public void saveAsJpg(File f) { 
     String fname = f.getAbsolutePath(); 
     FileOutputStream fos = null; 
     try { 
      fos = new FileOutputStream(f); 
      // Take the bitmap of the view and write it out as a jpeg. 
      mBitmap.compress(CompressFormat.JPEG, 95, fos); 

     } catch (Throwable ex) { 
      ex.printStackTrace(); 

     } 
    } 
} 

`我已經編輯我的code.It只保存一個空白screen.Why fingerpaint圖像不會被保存? Plzz幫助我

回答

0

你永遠不會初始化touchview。插入此行:

TouchEventView touchview = (TouchEventView) findViewById(R.id.mydrawview1); 

public void save(),並刪除第二行的聲明。

+0

謝謝....它工作:) – user1496980 2012-07-10 06:22:57

+0

嘿它現在工作,但是當我試圖打開保存的圖像時,它顯示無效的圖像 – user1496980 2012-07-10 17:35:47

+0

你能告訴我你用來打開圖像的代碼,第一個logcat輸出3-4行? – 2012-07-10 19:00:24

相關問題