私は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();
}
メニューボタンをクリックして図面を保存するにはどうすればよいですか?
は研究に多くの労力後
あなたはドロアブルをビューから取得して使用できますか? – akonsu
いいえ、@Akonsu ....理想的には、私はLinearLayoutオブジェクトのオブジェクトを使ってgetRootViewをできるはずです。しかし、この場合はレイアウトがないので、getRootViewのソースを取得していません。 –
なぜですか?技術的な問題はありますか?エラーが出ていますか? – akonsu