2012-06-08 9 views
5

私は何をしたいのですか、イメージ上で指がタッチされた状態でテキストが移動しています。ボタンをクリックすると、既存のイメージがテキストとして貼り付けられた新しいイメージに再描画されます。イメージデバイスの問題を移動して再描画する

エミュレータと同様、v3.1でも問題なく動作します。 私はv2.2デバイスでテストしようとしましたが、forse Close.WhileはDevices.Canをサポートしています。ここから私を助けてくれます。数週間後には重要です。事前に感謝します。

///Redrawing the image & touchin Move of the Canvas with text 
public void redrawImage(String path,float sizeValue,String textValue,int colorValue) { 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     try { 
      options.inMutable = true; 
     } catch (Exception e) { 
      // TODO: handle exception 
      System.out.println("#############Error is======"+e.getMessage()); 
     } 

     Bitmap bm = BitmapFactory.decodeFile(path,options); 

     proxy = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888); 
     Canvas c = new Canvas(proxy); 

     //Here, we draw the background image. 
     c.drawBitmap(bm, new Matrix(), null); 

     Paint paint = new Paint(); 
     paint.setColor(colorValue); // Text Color 
     paint.setStrokeWidth(30); // Text Size 
     paint.setTextSize(sizeValue); 

     System.out.println("Values passing=========="+someGlobalXvariable+", "+someGlobalYvariable+", " 
             +sizeValue+", "+textValue); 

     //Here, we draw the text where the user last touched. 
     c.drawText(textValue, someGlobalXvariable, someGlobalYvariable, paint); 

     popImgae.setImageBitmap(proxy); 
} 
+0

logcatからエラーログを投稿できますか? – Zelleriation

+1

options.inMutable = true; APIレベル11以降:ビットマップbmをMutableとしてロードする必要はありません。ビットマッププロキシのみを変更可能 –

答えて

0

それは力の近くが発生したときに、すぐにテキストがこれまでに描画する前に、あなたが触れるように、アプリが起動した後に、右のように、知って役立つだろうか?デバイス
とても簡単とfullproof技術上の

デバッグは、実際のデバイス上でデバッグモードでコードを実行されています。関数の先頭にブレークポイントを追加し、強制終了するまで各行にステップインします。その後

Bitmap bm = BitmapFactory.decodeFile(path,options); 

おそらくOOM
あなたは、新しいビットマップの割り当てはすぐにメモリをたくさん食べると、クラッシュを引き起こす可能性があり、タッチ時のすべてのフレームのように、繰り返しredrawImageを呼び出す場合力の終了は少し後に起こるかもしれません。 bmをメソッドparamまたはファイルから一度だけ割り当てられたメンバーフィールドに変更してみてください。

関連する問題