|
ファイル名「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のコードを使用して連続したデータを取り込み分解 |
|
今までの読み込みこんだデータを図形に変換してみた! |
|
アプリケーション専用ファイルでの書き込み読み込み |
|
アプリケーション終了→次回起動時までデータの保持 |
|
Androidプログラミング日記 (仮)
