構成
実行結果
package com.efolab.MainActivity;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.LinearLayout;
import com.efolab.MainActivity.Mondai.Mondai;
import com.efolab.MainActivity.MyContents.MyContents;
import com.efolab.MainActivity.MyInputPanel.MyInputPanel;
public class Main extends Activity {
Context context;
LinearLayout baseLayout;
LinearLayout.LayoutParams params;
public final static int
S_TITLE = 0,
S_PLAY = 1,
S_CLEAR = 2,
S_GAMEOVER = 3;
public static int mondai_length = 10;
public static int mondai_course = 1;
public static int mondai_keta = 1;
public static int mondai_youso = 2;
ArrayList<Mondai> mondaiArray;
private final int FP = ViewGroup.LayoutParams.FILL_PARENT,
WC = ViewGroup.LayoutParams.WRAP_CONTENT;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
context = getApplicationContext();
baseLayout = new LinearLayout(context);
baseLayout.setOrientation(LinearLayout.VERTICAL);
setContentView(baseLayout);
LinearLayout[] _contents = { new MyHeader(context),
new MyContents(context), new MyInputPanel(context),
new MyFooter(context) };
int[][] _params = { { FP, WC }, { FP, 0 }, { FP, WC }, { FP, WC } };
float[] _weight = { 0, 1.0f, 0, 0 };
for (int i = 0; i < _contents.length; i++) {
params = new LinearLayout.LayoutParams(_params[i][0], _params[i][1]);
params.weight = _weight[i];
baseLayout.addView(_contents[i], params);
}
}
public static OnClickListener l = new OnClickListener() {
@Override
public void onClick(View v) {
TODO
Log.v("OnClick", "" + v.getTag());
MyContents.changeContentsText("" + v.getTag());
}
};
}
package com.efolab.MainActivity.Mondai;
import java.util.ArrayList;
import android.content.Context;
public class Mondai{
public static ArrayList<Mondai> kekka;
public int kotae;
public int seikai;
public String mondaiStr;
public Mondai(Context context) {
}
private static int getIntRand(int min , int max){
int ret = (int)Math.floor(Math.random()*(max-min+1))+min;
return ret;
}
public String getMondaiString(){
return mondaiStr;
}
public boolean setKotaeString(String kotae){
boolean ret = false;
return ret;
}
}
MyContents.java
package com.efolab.MainActivity.MyContents;
import android.content.Context;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MyContents extends LinearLayout {
static TextView tv;
static MyKokuban kokuban;
public MyContents(Context context) {
super(context);
TODO
this.setOrientation(LinearLayout.VERTICAL);
this.setPadding(10, 10, 10, 10);
tv = new TextView(context);
this.addView(tv);
kokuban = new MyKokuban(context);
this.addView(kokuban);
}
public static void changeContentsText(String str) {
tv.setText(str);
kokuban.setKotae(str);
}
}
MyKokuban.java
package com.efolab.MainActivity.MyContents;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.Log;
import android.view.View;
public class MyKokuban extends View{
String kotaeStr = "";
String mondaiStr = "";
Paint paint;
public MyKokuban(Context context) {
super(context);
TODO
this.setBackgroundColor(Color.DKGRAY);
paint = new Paint();
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setTextSize(30);
paint.setTypeface(Typeface.SANS_SERIF);
mondaiStr = "3 + 2 = ";
}
@Override
protected void onDraw(Canvas canvas) {
TODO
super.onDraw(canvas);
canvas.drawText(mondaiStr, 10, 30, paint);
canvas.drawText(kotaeStr , 100 , 200 , paint);
}
public void setKotae(String ans){
Log.v("","ans"+ans);
if(ans.matches("ok")){
mondaiStr += kotaeStr;
kotaeStr = "";
}
else if(ans.matches("clear")){
kotaeStr = "";
}
else{
kotaeStr += ans;
}
invalidate();
}
}
MyInputPanel.java
package com.efolab.MainActivity.MyInputPanel;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TableLayout;
public class MyInputPanel extends LinearLayout {
@SuppressWarnings("unused")
private static final int
WC = ViewGroup.LayoutParams.WRAP_CONTENT,
FP = ViewGroup.LayoutParams.FILL_PARENT;
public MyInputPanel(Context context) {
super(context);
Log.v("height","height="+this.getHeight());
this.setBackgroundColor(Color.LTGRAY);
TableLayout tableLeft = new NumberTable(context);
LinearLayout.LayoutParams lpLeft = new LinearLayout.LayoutParams(0 , FP);
lpLeft.weight = 0.6f;
this.addView(tableLeft , lpLeft);
LinearLayout linearRight = new SubLinear(context);
LinearLayout.LayoutParams lpRight = new LinearLayout.LayoutParams(0 , FP);
lpRight.weight = 0.4f;
this.addView(linearRight , lpRight);
}
}
NumberTable.java
package com.efolab.MainActivity.MyInputPanel;
import android.content.Context;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;
import com.efolab.MainActivity.Main;
public class NumberTable extends TableLayout{
private static final int
WC = ViewGroup.LayoutParams.WRAP_CONTENT,
FP = ViewGroup.LayoutParams.FILL_PARENT;
public NumberTable(Context context) {
super(context);
XXX
Button[] buttons = new Button[9];
final int iMaxRow = 3;
final int iMaxCol = 3;
int index = 0;
for(int iRow=0;iRow<iMaxRow;iRow++){
TableRow row = new TableRow(context);
for(int iCol = 0;iCol<iMaxCol;iCol++){
String value = ""+(index+1) % 10;
buttons[index] = new Button(context);
buttons[index].setText(value);
buttons[index].setTag(value);
buttons[index].setOnClickListener(Main.l);
row.addView(buttons[index]);
TableRow.LayoutParams _params = new TableRow.LayoutParams(0 , FP);
_params.weight = 0.33f;
buttons[index].setLayoutParams(_params);
buttons[index].setGravity(Gravity.CENTER);
index++;
}
this.addView(row);
}
TableRow row_4 = new TableRow(context);
Button btn_0 = new Button(context);
btn_0.setText("0");
btn_0.setTag("0");
row_4.addView(btn_0);
this.addView(row_4);
TableRow.LayoutParams lpRow_4 = new TableRow.LayoutParams(0 , WC);
lpRow_4.weight = 1.0f;
btn_0.setLayoutParams(lpRow_4);
btn_0.setOnClickListener(Main.l);
}
}
SubLinear.java
package com.efolab.MainActivity.MyInputPanel;
import android.content.Context;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import com.efolab.MainActivity.Main;
public class SubLinear extends LinearLayout{
@SuppressWarnings("unused")
private static final int
WC = ViewGroup.LayoutParams.WRAP_CONTENT,
FP = ViewGroup.LayoutParams.FILL_PARENT;
public SubLinear(Context context) {
super(context);
TODO
LinearLayout.LayoutParams lpLinear;
this.setOrientation(LinearLayout.VERTICAL);
Button btn_cls = new Button(context);
btn_cls.setText("けす");
lpLinear = new LinearLayout.LayoutParams(FP,0);
lpLinear.weight = 0.25f;
this.addView(btn_cls ,lpLinear);
Button btn_ok = new Button(context);
btn_ok.setText("こたえ");
lpLinear = new LinearLayout.LayoutParams(FP,0);
lpLinear.weight = 0.75f;
this.addView(btn_ok, lpLinear);
btn_cls.setTag("clear");
btn_ok.setTag("ok");
btn_cls.setOnClickListener(Main.l);
btn_ok.setOnClickListener(Main.l);
}
}