2012-04-09 18 views
0

私はAPIDemoのFingerPaintアプリを使ってサンプルペイントアプリを作成しました。 setContentView(R.layout.main)の「通常の」パターンの代わりに、Viewを拡張し、setContentView(新しいMyView(this))としてコンテンツを設定するMyViewクラスを使用します。今私が描いたものはSDCardに保存したい。このために私はgetRootViewを使ってrootviewを知る必要があります。これはレイアウトのオブジェクトによって得られます(例:LinearLayout L1 = new ...)。L1.getRootView。このMyViewを使用しているため、私はrootviewを取得することも、ビットマップを保存することもできません。アンドロイドでFingerPaint.javaコードを使用して図面を保存する

myview.setDrawingCacheEnabled(true); 
    myview.requestFocus(); 
    myview.getRootView(); 

    System.out.println("MYVIEW = "+myview); 

    myview.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); 
    myview.layout(0, 0, myview.getMeasuredWidth(), myview.getMeasuredHeight()); 

    myview.buildDrawingCache(true); 
    mBitmap = myview.getDrawingCache(); 
    //System.out.println("myview.getDrawingCache() = "+newview.getDrawingCache()); 

    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    myview.setDrawingCacheEnabled(false); // clear drawing cache 
    System.out.println("BITMAP = "+mBitmap); 

    File f = new File(Environment.getExternalStorageDirectory() 
      + File.separator + "test.jpg"); 
    try { 
     f.createNewFile(); 
     FileOutputStream fo = new FileOutputStream(f); 
     fo.write(bytes.toByteArray()); 
    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

メニューボタンをクリックして図面を保存するにはどうすればよいですか?

は研究に多くの労力後

+0

あなたはドロアブルをビューから取得して使用できますか? – akonsu

+0

いいえ、@Akonsu ....理想的には、私はLinearLayoutオブジェクトのオブジェクトを使ってgetRootViewをできるはずです。しかし、この場合はレイアウトがないので、getRootViewのソースを取得していません。 –

+0

なぜですか?技術的な問題はありますか?エラーが出ていますか? – akonsu

答えて

関連する問題