2012年6月15日金曜日

Androidで縦書き4:複数行を表示する。


1列40文字を2行表示する。

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class TategakiActivity extends Activity {

 public class CustomView extends View {
  public CustomView(Context context) {
   super(context);
   setFocusable(true);
  }

  protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   int textCount = 40;//一行の文字数
   
   //キャンバスサイズの取得
   int height = canvas.getHeight();// 800ピクセル
   int width = canvas.getWidth();// 480ピクセル

   Paint paint = new Paint();
   paint.setAntiAlias(true);

   paint.setColor(Color.WHITE);
   paint.setTextSize(20);
   
   String text = " 親譲りの無鉄砲で小供の時から損ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰を抜かした事がある。なぜそんな無闇をしたと聞く人があるかも知れぬ。";
   int textLength = text.length();
   System.out.println( text.length() );
   
   //必要な行数
   int line = textLength / textCount ;//1
   int linePlus = textLength % textCount;
   System.out.println( line + "::" + linePlus );
   
   int low = height / textCount;//固定値 20 文字の高さ
   int w = low ;//上からの位置
   int moveText = 0;
   for ( int j = 1 ; j < 3 ; j++ ){
    for (int i = 0 ; i < 40 ; i++ ) {
     String moji = String.valueOf(text.charAt( moveText ));
     canvas.drawText( moji , width-20*j, w, paint);
     moveText += 1;
     w = w + low;
    }
     w = low ;
   }

  }
 }
 
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // ステータスバー削除    
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
  
  // タイトルバーの削除    
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  
  View drawView = new CustomView(this);
  setContentView(drawView);
 }
}


関連記事

0 件のコメント:

コメントを投稿