最近项目中需要一些实现一些需求,在cordova里面实现一个页面带水印的效果,按理说这种效果,其实在html中实现更好,可是项目就要让我在andorid端实现这样的效果,无奈硬着头皮上了,看了cordovaActivity的源码后,发现其实要重写两个方法,就可以实现这种效果
我们需要重写cordovaActivity 的
makeWebView() createViews()这两个方法。代码如下
public class WaterActivity extends CordovaActivity{
SystemWebView web;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//获取andorid的content 我们的根布局
ViewGroup rootView=(ViewGroup)findViewById(android.R.id.content);
//加载我们的水印布局
View view=LayoutInflater.from(this).inflate(R.layout.activity_demo, null);
//添加到我们的根布局
rootView.addView(view, 0);
//创建cordova的webview
web=new SystemWebView(this);
web.setBackgroundColor(Color.TRANSPARENT);
web.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
//添加到我们的根布局中
rootView.addView(web,0);
super.init();
loadUrl("file:///android_asset/www/index.html");
}
@Override
protected CordovaWebView makeWebView() {
// TODO Auto-generated method stub
return new CordovaWebViewImpl(new SystemWebViewEngine(web));
}
@Override
protected void createViews() {
// TODO Auto-generated method stub
if (preferences.contains("BackgroundColor")) {
try {
int backgroundColor = preferences.getInteger("BackgroundColor", Color.BLACK);
// Background of activity:
appView.getView().setBackgroundColor(backgroundColor);
}
catch (NumberFormatException e){
e.printStackTrace();
}
}
appView.getView().requestFocusFromTouch();
}
}