2017-03-07 9 views
0

長い文字列があり、画像に収まらないと確信しています。だから私は、Canvasを使用して、Bitmapに行を計算し、行ごとに書くことになりました。問題は最初の行だけが書かれ​​ていることです。私はいつもこの1つのイメージを書いています。各行の長さは40文字に固定されています。あなたはmQuotelengthが使用し、キャンバスにループでテキストを描く

private Bitmap prepareImageWithText(String text){ 
     Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.text_image); // Load your bitmap here 
     Bitmap aBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); // copy the bitmap because the one from the Resources is immutable. 
     Canvas canvas = new Canvas(aBitmap); 
     Paint paint = new Paint(); 
     paint.setColor(Color.BLACK); 
     paint.setTextSize(75); 

     for(int i=0; i<calculateLines(text); i++) { 
      int beginFrom = i*40; 
      int endAt = beginFrom + 40; 
      if(endAt > text.length()){ 
       endAt = text.length()-1; 
      } 
      String writableArea = text.substring(beginFrom, endAt); 
      canvas.drawText(writableArea, 100, 300+(i*100), paint); 
      canvas.save(); 
     } 
     return aBitmap; 
    } 

    private int calculateLines(String text){ 
     if(!TextUtils.isEmpty(text)){ 
      int lines = text.length()/40; 
      return lines; 
     } 
     return 1; 
    } 
+0

単純に 'android.text.Layout'を使用してください。 – pskink

+0

@pskink説明できますか? – Ichthyocentaurs

+0

'Canvas'にあなたのlooongテキストを描画するために使用します。' 'Canvas'に' 'Layout'インスタンスを作成して描画します。 – pskink

答えて

1

あなたはcalculateLinesからquoteを渡し、それが空でない場合にのみ何かをやっている、まだ:以下のコードを確認してください。私はこの混乱があなたの問題の原因だと思う。あなたが渡す値が渡したい値であることを確認し、の代わりにの代わりにのを使用してください。

+0

mQuoteとquoteは同じです。フォーマットエラーです。 – Ichthyocentaurs

+0

@Ichthyocentaurs引用は何ですか、どのように初期化されますか?メソッドが呼び出されるときの値は何ですか? –

+0

prepareImageWithText(文字列テキスト)は、入力としてテキストを受け取ります。 calculateLines()の呼び出しはこれを入力として受け取ります。 – Ichthyocentaurs

2
for(int i=0; i<calculateLines(quote); i++) { 

if(endAt > text.length()){ 

この2行は、あなたの注意を必要とします。 "text"と "quote"は同じ文字列ですか?

+0

これらは同じものですが、フォーマットエラーです。私は今のところこれを修正したと思う。 – Ichthyocentaurs

+0

@Ichthyocentaursは書式設定エラーではありません。あなたはあなたの問題を説明する必要があります。そうでなければ、私たちがあなたを助けようとするのは賢明ではありません。 –

+0

本当に混乱して申し訳ありません、私はすべての変数名を修正しました。しかし実際の問題は、ループの反復回数の計算が正しくないことでした。 – Ichthyocentaurs

関連する問題