html5登录界面完整代码(html下载链接代码怎么写)
其实html5登录界面完整代码的问题并不复杂,但是又很多的朋友都不太了解html下载链接代码怎么写,因此呢,今天小编就来为大家分享html5登录界面完整代码的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
如何利用html5开发android界面
三种解决方式:1 viewport属性 2 CSS控制 3 JS控制
1 viewport属性放在HTML的<meta>中
<SPAN style="FONT-SIZE: x-small"><head>
<title>Exmaple</title>
<meta name=”viewport” content=”width=device-width,user-scalable=no”/>
</head></SPAN>
meta中viewport的属性如下
<SPAN style="FONT-SIZE: x-small"><meta name="viewport"
content="
height= [pixel_value| device-height],
width= [pixel_value| device-width ],
initial-scale= float_value,
minimum-scale= float_value,
maximum-scale= float_value,
user-scalable= [yes| no],
target-densitydpi= [dpi_value| device-dpi|
high-dpi| medium-dpi| low-dpi]
"
/></SPAN>
2 CSS控制设备密度
为每种密度创建独立的样式表(注意其中的webkit-device-pixel-ratio 3个数值对应3种分辨率)
<link rel="stylesheet" media="screen and(-webkit-device-pixel-ratio: 1.5)" rel="external nofollow" href="hdpi.css"/>
<link rel="stylesheet" media="screen and(-webkit-device-pixel-ratio: 1.0)" rel="external nofollow" href="mdpi.css"/>
<link rel="stylesheet" media="screen and(-webkit-device-pixel-ratio: 0.75)" rel="external nofollow" href="ldpi.css"/>
在一个样式表中,指定不同的样式
WebView myWebView=(WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());
另外出于用户习惯上的考虑需要将WebView表现得更像一个浏览器,也就是需要可以回退历史记录
因此需要覆盖系统的回退键 goBack,goForward可向前向后浏览历史页面
Java代码
public boolean onKeyDown(int keyCode, KeyEvent event){
if((keyCode== KeyEvent.KEYCODE_BACK)&& myWebView.canGoBack(){
myWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
//处理javascript中的confirm
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result){
Builder builder= new Builder(MainActivity.this);
builder.setTitle("confirm");
builder.setMessage(message);
builder.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
result.confirm();
}
});
builder.setNegativeButton(android.R.string.cancel,
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
result.cancel();
}
});
builder.setCancelable(false);
builder.create();
builder.show();
return true;
};
@Override
//设置网页加载的进度条
public void onProgressChanged(WebView view, int newProgress){
MainActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress* 100);
super.onProgressChanged(view, newProgress);
}
//设置应用程序的标题title
public void onReceivedTitle(WebView view, String title){
MainActivity.this.setTitle(title);
super.onReceivedTitle(view, title);
}
});
● Android中的调试
通过JS代码输出log信息
Js代码
Js代码: console.log("Hello World");
Log信息: Console: Hello World
在WebChromeClient中实现onConsoleMesaage()回调方法,让其在LogCat中打印信息
Java代码复制代码收藏代码
WebView myWebView=(WebView) findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient(){
public void onConsoleMessage(String message, int lineNumber, String sourceID){
Log.d("MyApplication", message+"-- From line"
+ lineNumber+" of"
+ sourceID);
}
});
以及
Java代码
WebView myWebView=(WebView) findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient(){
public boolean onConsoleMessage(ConsoleMessage cm){
Log.d("MyApplication", cm.message()+"-- From line"
+ cm.lineNumber()+" of"
+ cm.sourceId());
return true;
}
});
*ConsoleMessage还包括一个 MessageLevel表示控制台传递信息类型。您可以用messageLevel()查询信息级别,以确定信息的严重程度,然后使用适当的Log方法或采取其他适当的措施。
● HTML5本地存储在Android中的应用
HTML5提供了2种客户端存储数据新方法:
localStorage没有时间限制
sessionStorage针对一个Session的数据存储
Js代码
<script type="text/javascript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>
<script type="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>
WebStorage的API:
//清空storage
localStorage.clear();
//设置一个键值
localStorage.setItem(“yarin”,“yangfegnsheng”);
//获取一个键值
localStorage.getItem(“yarin”);
//获取指定下标的键的名称(如同Array)
localStorage.key(0);
//return“fresh”//删除一个键值
localStorage.removeItem(“yarin”);
注意一定要在设置中开启哦
setDomStorageEnabled(true)
在Android中进行操作
//启用数据库
webSettings.setDatabaseEnabled(true);
String dir= this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
//设置数据库路径
webSettings.setDatabasePath(dir);
//使用localStorage则必须打开
webSettings.setDomStorageEnabled(true);
//扩充数据库的容量(在WebChromeClinet中实现)
public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota,
long estimatedSize, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater){
quotaUpdater.updateQuota(estimatedSize* 2);
}
在JS中按常规进行数据库操作
function initDatabase(){
try{
if(!window.openDatabase){
alert('Databases are not supported by your browser');
} else{
var shortName='YARINDB';
var version='1.0';
var displayName='yarin db';
var maxSize= 100000;// in bytes
YARINDB= openDatabase(shortName, version, displayName, maxSize);
createTables();
selectAll();
}
} catch(e){
if(e== 2){
// Version mismatch.
console.log("Invalid database version.");
} else{
console.log("Unknown error"+ e+".");
}
return;
}
}
function createTables(){
YARINDB.transaction(
function(transaction){
transaction.executeSql('CREATE TABLE IF NOT EXISTS yarin(id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL,desc TEXT NOT NULL);', [], nullDataHandler, errorHandler);
}
);
insertData();
}
function insertData(){
YARINDB.transaction(
function(transaction){
//Starter data when page is initialized
var data= ['1','yarin yang','I am yarin'];
transaction.executeSql("INSERT INTO yarin(id, name, desc) VALUES(?,?,?)", [data[0], data[1], data[2]]);
}
);
}
function errorHandler(transaction, error){
if(error.code==1){
// DB Table already exists
} else{
// Error is a human-readable string.
console.log('Oops. Error was'+error.message+'(Code'+error.code+')');
}
return false;
}
function nullDataHandler(){
console.log("SQL Query Succeeded");
}
function selectAll(){
YARINDB.transaction(
function(transaction){
transaction.executeSql("SELECT* FROM yarin;", [], dataSelectHandler, errorHandler);
}
);
}
function dataSelectHandler(transaction, results){
// Handle the results
for(var i=0; i<results.rows.length; i++){
var row= results.rows.item(i);
var newFeature= new Object();
newFeature.name= row['name'];
newFeature.decs= row['desc'];
document.getElementByIdx_x_x_x("name").innerHTML="name:"+newFeature.name;
document.getElementByIdx_x_x_x("desc").innerHTML="desc:"+newFeature.decs;
}
}
function updateData(){
YARINDB.transaction(
function(transaction){
var data= ['fengsheng yang','I am fengsheng'];
transaction.executeSql("UPDATE yarin SET name=?, desc=? WHERE id= 1", [data[0], data[1]]);
}
);
selectAll();
}
function ddeleteTables(){
YARINDB.transaction(
function(transaction){
transaction.executeSql("DROP TABLE yarin;", [], nullDataHandler, errorHandler);
}
);
console.log("Table'page_settings' has been dropped.");
}
注意onLoad中的初始化工作
function initLocalStorage(){
if(window.localStorage){
textarea.addEventListener("keyup", function(){
window.localStorage["value"]= this.value;
window.localStorage["time"]= new Date().getTime();
}, false);
} else{
alert("LocalStorage are not supported in this browser.");
}
}
window.onload= function(){
initDatabase();
initLocalStorage();
}
● HTML5地理位置服务在Android中的应用
//启用地理定位
webSettings.setGeolocationEnabled(true);
//设置定位的数据库路径
webSettings.setGeolocationDatabasePath(dir);
//配置权限(同样在WebChromeClient中实现)
public void onGeolocationPermissionsShowPrompt(String origin,
GeolocationPermissions.Callback callback){
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
HTML5中通过navigator.geolocation对象获取地理位置信息
常用的navigator.geolocation对象有以下三种方法:
Js代码
//获取当前地理位置
navigator.geolocation.getCurrentPosition(success_callback_function, error_callback_function, position_options)
//持续获取地理位置
navigator.geolocation.watchPosition(success_callback_function, error_callback_function, position_options)
//清除持续获取地理位置事件
navigator.geolocation.clearWatch(watch_position_id)
其中success_callback_function为成功之后处理的函数,error_callback_function为失败之后返回的处理函数,参数position_options是配置项
//定位
function get_location(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(show_map,handle_error,{enableHighAccuracy:false,maximumAge:1000,timeout:15000});
} else{
alert("Your browser does not support HTML5 geoLocation");
}
}
html5设计王者荣耀主界面
《王者荣耀》是由腾讯游戏开发并运行的一款运营在Android、IOS平台上的MOBA类手机游戏,于2015年11月26日在Android、IOS平台上正式公测,游戏前期使用名称有《英雄战迹》、《王者联盟》。《Arena
Of
Valor》,即《王者荣耀》的欧美版本于2018年在任天堂Switch平台发售。[1]游戏是类dota手游,游戏中的玩法以竞技对战为主,玩家之间进行1V1、3V3、5V5等多种方式的PVP对战,还可以参加游戏的冒险模式,进行PVE的闯关模式,在满足条件后可以参加游戏排位赛等
如何自定义 Cocos2d-html5 Loading 界面
自定义 Cocos2d-html5 Loading界面的方法:
自定义一个 Loader.js文件,实现 Loader类,完成自定义Loading界面的具体实现,可以参考LoaderScene的实现,在其上修改扩充,它完成了修改 Logo图片,并添加了一个简单的精度条,是加载过程更为一目了然,这里并没有多么炫的效果,只是自定义一个 Loading界面源码如下:
Loading= cc.Scene.extend(
_logo: null,
_logoTexture: null,
_texture2d: null,
_bgLayer: null,
_label: null,
_winSize:null,
_processLayer: null,//相比 LoaderScene的实现,添加了两个属性,标示进度条层和进度条长度
_processLayerLength: null,
//构造函数
ctor: function(){
this._super();
this._winSize= cc.Director.getInstance().getWinSize();
},
init:function(){
cc.Scene.prototype.init.call(this);
// logo图片和 label的添加..这里省略,于 LoaderScene同样
//设置进度条层,它就是一个红色颜色层,通过长度来标示加载的进度
this._processLayerLength= 500;
this._processLayer= cc.LayerColor.create(cc.c4b(255, 100, 100, 128), 1, 30);
this._processLayer.setPosition(cc.pAdd(centerPos, cc.p(- this._processLayerLength/ 2,-logoHeight/ 2- 50)));
//可以启用锚点,并设置以满足自己的需要
// this._processLayer.ignoreAnchorPointForPosition(false);
// this._processLayer.setAnchorPoint(cc.p(0, 0));
this._bgLayer.addChild(this._processLayer);
}
实现LoaderScene方法:
Loading.preload= function(resources, selector, target){
if(!this._instance){
//创建一个 Loading
this._instance= new Loading();
this._instance.init();
}
//...
return this._instance;
};
运行效果:
关于html5登录界面完整代码到此分享完毕,希望能帮助到您。