2012-07-09 1 views
0

안녕하세요 저장 메뉴를 통해 fingerpaint API에 사용자가 만든 이미지를 저장하고 싶습니다. 단지 빈 screen.Why fingerpaint 이미지가 저장되지 않는 저장
여기에 활동 클래스`여기안드로이드에 손가락 그림 이미지를 저장하는 동안 응용 프로그램이 중지되었습니다.

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을 편집 한입니까? Plzz help me

답변

0

touchview을 초기화하지 않으셔도됩니다. 이 줄을 삽입 : public void save()

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

를, 두 번째 줄에 선언을 삭제합니다.

+0

고마워 .... 작동 :) – user1496980

+0

안녕하세요 지금 작동하지만 저장된 이미지를 열려고 시도 할 때 잘못된 이미지가 표시됩니다 – user1496980

+0

이미지를 여는 데 사용하는 코드를 표시 할 수 있습니까? logcat 출력의 3-4 라인? –

관련 문제