ファイル名「Object.text」
box,blue,50,20,circle,red,30,30,box,gray,50,100,line,sian,200,0 |
csvファイルのように”,”で区切ってみました。csvファイルも処理出来るように練習がてらこんな感じで設定。 |
ファイル名「InputText2Activity.java」変更なし。
package and.roid.inputtext; import android.app.Activity; import android.graphics.PixelFormat; import android.os.Bundle; import android.view.Display; import android.view.Window; import android.view.WindowManager; public class InputText2Activity extends Activity { public float disp_w,disp_h; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFormat(PixelFormat.TRANSLUCENT); Window window = getWindow(); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); WindowManager manager = window.getWindowManager(); Display disp = manager.getDefaultDisplay(); disp_w = disp.getWidth(); disp_h = disp.getHeight(); setContentView(new InputTextView(this)); } } |
ファイル名「InputTextView.java」 package and.roid.inputtext; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.StringTokenizer; import android.content.Context; import android.content.res.AssetManager; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class InputTextView extends View { private InputText2Activity activity;//アクティビティクラスの登録準備 private String text;//表示文字登録準備 static private final String FILE_PATH = "object.txt";//ファイルパス private Object ob; private String[][] data = new String[4][4]; //コンテキスト public InputTextView(Context context) { super(context); initInputText(context); } //ここでファイル読み込み private void initInputText(Context context) { //アクティビティクラス登録 activity = (InputText2Activity)context; //ファイル読み込みなど操作するときはtry{}catch{}で囲む try{ //元からあるassetsフォルダに入れたtextファイルを読み込む方法 AssetManager assets = getResources().getAssets(); InputStream in = assets.open(FILE_PATH); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String str; StringBuilder strs = new StringBuilder(); int i=0;int j=0; while ((str = br.readLine()) != null) { strs.append(str); } br.close(); text = strs.toString(); }catch (Exception e){ text = "読み込み失敗"; } //StringTokenizerは引数で設定されたStringオブジェクトを切り分けます //今回は引数で","で区切って切り分けています StringTokenizer st = new StringTokenizer(text,","); for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ data[i][j] = st.nextToken(); } } } //Viewを継承させるとここが自動的に呼ばれる protected void onDraw(Canvas c){ setBackgroundColor(Color.WHITE); super.onDraw(c); Paint p = new Paint(); p.setAntiAlias(true); p.setColor(Color.RED); p.setTextSize(15); //今回はちゃんと分けれたか試して表示だけしています for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ c.drawText(data[i][j], j*50, 100+i*100, p); } } } }? |
実行結果 |
![]() |
無事に表示できました。 |
今回は、前回のソースコードを変えずに、生成されたStringオブジェクト(text)をなんとかして分解できないものかと色々調べた結果、いいメソッドがあったのでそれを使用してみました。 textファイル自体は”,”で区切っています、これはcsvファイルもこのやり方で取り込めるということです。 |
assetsフォルダに入れたtextファイルを読み込み表示 |
|
その1のコードを使用して連続したデータを取り込み分解 |
|
今までの読み込みこんだデータを図形に変換してみた! |
|
アプリケーション専用ファイルでの書き込み読み込み |
|
アプリケーション終了→次回起動時までデータの保持 |