java中多态三种实现方式之一

1,用接口实现多态
[/code]
package com.tarena.framework;

import android.graphics.Canvas;
import android.graphics.Paint;

public interface BaseState {
public void draw(Canvas canvas,Paint paint);
public void EventTouch(int x,int y);

}
[code="java"]

package com.tarena.framework;

import com.tarena.state.GameState;
import com.tarena.state.HelpState;
import com.tarena.state.MainMenuState;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;

public class Main extends View {
public static int currentState;
private HelpState helpstate;
private MainMenuState mainmenustate;
private GameState gamestate;
public Main(Context context){
super(context);
currentState=1;
helpstate=new HelpState();
mainmenustate=new MainMenuState();
gamestate=new GameState();
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint=new Paint();
paint.setTextSize(30);
paint.setColor(0xFFFF0000);
switch(currentState){
case 1:
mainmenustate.draw(canvas, paint);
break;
case 2:
gamestate.draw(canvas, paint);
break;
case 3:
helpstate.draw(canvas, paint);
break;


}
super.onDraw(canvas);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
int x=(int) event.getX();
int y=(int) event.getY();
switch(currentState){
case 1:
mainmenustate.EventTouch(x, y);
break;
case 2:
gamestate.EventTouch(x, y);
break;
case 3:
helpstate.EventTouch(x, y);
break;
}

invalidate();
return super.onTouchEvent(event);
}

}
[/code]
package com.tarena.state;

import android.graphics.Canvas;
import android.graphics.Paint;

import com.tarena.framework.BaseState;
import com.tarena.framework.Main;

public class GameState implements BaseState {

@Override
public void draw(Canvas canvas, Paint paint) {
canvas.drawText("game", 150, 200, paint);
}

@Override
public void EventTouch(int x, int y) {
if(x>200&&y>300){
Main.currentState=1;
}

}

}
[code="java"]

package com.tarena.state;

import android.graphics.Canvas;
import android.graphics.Paint;

import com.tarena.framework.BaseState;
import com.tarena.framework.Main;

public class HelpState implements BaseState{

@Override
public void draw(Canvas canvas, Paint paint) {
canvas.drawText("help", 150, 200, paint);
}

@Override
public void EventTouch(int x, int y) {
if(x>200){
Main.currentState=1;
}
}


}
[/code]
package com.tarena.state;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

import com.tarena.framework.Main;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Main main=new Main(this);
setContentView(main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}
[code="java"]

package com.tarena.state;

import android.graphics.Canvas;
import android.graphics.Paint;

import com.tarena.framework.BaseState;
import com.tarena.framework.Main;

public class MainMenuState implements BaseState{

@Override
public void draw(Canvas canvas, Paint paint) {
canvas.drawText("game", 100,50, paint);
canvas.drawText("help", 100, 250, paint);

}

@Override
public void EventTouch(int x, int y) {
if(y>50){
Main.currentState=3;
}else{
Main.currentState=2;
}

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值