Android学习笔记(27)--- 重写WebView,改变flash按键控制值

我们都知道,一般下载的flash游戏(基于键盘来玩的那一种),他们的游戏控制方式一般都是上下左右键。现在我想用其他的键来替代上下左右键。下面是实现过程:

1、由于是键盘控制,所以少不了onKeyDown与onKeyUp的使用。要想在游戏中改变控制的键值,就必须重写下WebView(这里使用WebView播放flash)。

重写WebView

public class mWebView extends WebView {

	public mWebView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
			return true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
			return true;
		}
		if(keyCode == KeyEvent.KEYCODE_L){
			//KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT);
			return super.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, event);
		}
		if(keyCode == KeyEvent.KEYCODE_R){
			//KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT);
			return super.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, event);
		}		
		return super.onKeyDown(keyCode, event);
	}
	@Override
	public boolean onKeyUp(int keyCode, KeyEvent event) {
		// TODO Auto-generated method stub
		if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
			return true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
			return true;
		}
		if(keyCode == KeyEvent.KEYCODE_L){
			//KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_LEFT);
			return super.onKeyUp(KeyEvent.KEYCODE_DPAD_LEFT, event);
		}
		if(keyCode == KeyEvent.KEYCODE_R){
			//KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT);
			return super.onKeyUp(KeyEvent.KEYCODE_DPAD_RIGHT, event);
		}	
		return super.onKeyUp(keyCode, event);	
	}
}

上面使用了“L”键代替了左键,使用“R”键替代了右键。具体要它怎么样,可自己修改。另要注意一点的是,由于有些游戏它是onKeyDown和onKeyUp都有不同操作的,所以在onKeyDown和onKeyUp都要进行键值的替换。

注意上面的构造函数:

public mWebView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

这个很重要,如果你在xml文件里面使用了WebView,那么上面的构造函数必须得要才不会出错。 其实这个方法是作为系统解析 XML 中定义的属性时作为回调方法用的。可以先看下xml文件:

    <com.ideal.viewfliperflash.mWebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:background="#00000000" />
或者:

    <view
        class="com.ideal.viewfliperflash.mWebView"
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:background="#00000000" />

2、看下自定义的WebView是怎么使用的:

public mWebView mWebFlash = null;
mWebFlash = (mWebView) findViewById(R.id.webview);
flash的加载:

	public void loadFlash() {
		WebSettings settings = mWebFlash.getSettings();
		settings.setPluginsEnabled(true);
		settings.setJavaScriptEnabled(true);
		settings.setAllowFileAccess(true);
		settings.setDefaultTextEncodingName("GBK");
		mWebFlash.setBackgroundColor(0);
		mWebFlash.loadUrl(fileCurrent);
	}
上面的fileCurrent是flash文件的路径。然后在需要的地方调用loadFlash即可。


3、若是在xml文件中没用用到自定义的WebView,那么之前那个构造函数没有也是不会出错的。

若想自定义View,以下的地址写的很简洁,也很有用。http://www.cnblogs.com/lovewf/archive/2011/11/28/2264473.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值