ファイル名「Object.text」
box,50,20,0,0,255,circle,30,30,255,0,0,box,50,100,200,200,200,line,200,1,100,100,255 |
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.R.color; 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 = new Object[4]; private String[][] data = new String[4][6]; //コンテキスト 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 st = new StringTokenizer(text,","); for(int i=0;i<4;i++){ for(int j=0;j<6;j++){ data[i][j] = st.nextToken(); } } //数値にしたい部分にInteger.valueOf()を使用して数値に変換しています for(int i=0;i<4;i++){ ob[i] = new Object(data[i][0], 50,50+i*150, Integer.valueOf(data[i][1]), Integer.valueOf(data[i][2]), Color.rgb(Integer.valueOf(data[i][3]), Integer.valueOf(data[i][4]), Integer.valueOf(data[i][5]))); } } //Viewを継承させるとここが自動的に呼ばれる protected void onDraw(Canvas c){ setBackgroundColor(Color.WHITE); super.onDraw(c); Paint p = new Paint(); p.setAntiAlias(true); for(int i=0;i<4;i++){ ob[i].drawObject(c, p); } } } |
ファイル名「Object.java」 package and.roid.inputtext; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; public class Object { public static final int BOX = 0; public static final int CIRCLE = 1; public static final int LINE = 2; public float px,py;//オブジェクトの座標 public int w,h;//オブジェクトの大きさ public int col;//オブジェクトのカラー public String str;//オブジェクトの形 public int obstate;//オブジェクトの形(を数値にしておく) public Object(String ob,float x,float y,int ww,int hh,int color){ px = x; py = y; str = ob; w = ww; h = hh; col = color; //ob.equals("xxx")でString値obの中身とequals("xxx")の"xxx"のstring値が同じなら //trueを返すメソッドで、これを使ってなんの図形を指定しているか調べて //obstateの数値を決めています if(ob.equals("box")==true)obstate=0; if(ob.equals("circle")==true)obstate=1; if(ob.equals("line")==true)obstate=2; } public void drawObject(Canvas c,Paint p){ switch(obstate){ case BOX: p.setColor(col); c.drawRect(new Rect((int)px,(int)py,(int)px+w,(int)py+h), p); break; case CIRCLE: p.setColor(col); c.drawCircle(px, py, w, p); break; case LINE: p.setColor(col); c.drawLine(px, py, px+w, py+h, p); break; } } } |
実行結果 |
![]() |
こんな感じに表示できました。 |
無事にデータから図形に変換できました。 次は書き込みの勉強をしなければ! |
assetsフォルダに入れたtextファイルを読み込み表示 |
|
その1のコードを使用して連続したデータを取り込み分解 |
|
今までの読み込みこんだデータを図形に変換してみた! |
|
アプリケーション専用ファイルでの書き込み読み込み |
|
アプリケーション終了→次回起動時までデータの保持 |