2016-05-10 19 views
-3

などAndroidのビットマップ元に戻すやり直し効果

元に戻すやり直し、元に戻す、四角鉛筆、消しゴム、ライン、楕円形、三角形、などの複数のツールでキャンバスを作成して、やり直していない作業。アンドゥ使用の変異体の

@Override 
     protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
      super.onSizeChanged(w, h, oldw, oldh); 

      mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
      mCanvas = new Canvas(mBitmap); 

} 

答えて

1

私は最初の答えに同意しません、ビットマップを格納するのは非常に高価です。

あなたが保存する必要があるのはアクションそのものです。新しいクラス呼び出しアクションを作成し、描画パス、ペイントスタイルなどを保存したり、ユーザーがやり直しボタンをクリックしてビットマップでアクションを実行したりできます。

私はpaintboardについてのデモを書いていますが、現在のところ、取り消しアクションのみをサポートしていますが、リストにアクションストアを追加すると、簡単にredo機能を追加できます。アドレスはPaintViewです。

+0

はい、ストアビットマップは高価ですが、アクションが複雑な場合はより単純な場合があります – Konstantin

-1

1 - やり直し(HashMapを使用して、例えば)各アクションの後にストアビットマップであり、このやり直しアクションならば、((アクションを元に戻す場合)ビットマップをプレビューする現在のビットマップまたは次のビットマップを置き換えます)。私が知っているようにアンドロイドSDKはあなたが望むことを行うためのデフォルトのAPIを持っていません。

+0

私にサンプルデモをお願いします。 – Tech

+0

各操作のビットマップのHashMapを保持すると、非常に迅速にOutOfMemoryErrorが得られます。 –

+0

はい、すべて知っています。しかし、この技術を巧みに使って、例えば複数のビットマップを保存せずに、いくつかのビットマップをssdに保存しているのであれば、それは起こりません。 – Konstantin

関連する問題