當前位置:吉日网官网 - 紀念幣收藏 - 如何用html5開發android界面

如何用html5開發android界面

三種解決方案:1 viewport屬性2 CSS控件3 JS控件。

1 viewport屬性放在HTML的中。

meta中視口的屬性如下

& ltmeta name="viewport "

內容= "

高度=[像素值|設備高度],

寬度=[像素值|設備寬度],

initial-scale =浮點值,

最小比例=浮點值,

maximum-scale =浮點值,

用戶可伸縮=[是|否],

目標密度dpi = [dpi值|設備dpi |

高dpi |中dpi |低dpi]

"

/& gt;

2 CSS控制設備密度

為每個密度創建壹個獨立的樣式表(註意WebKit-Device-Pixel-Ratio的三個值對應三種分辨率)。

在樣式表中,指定不同的樣式。

WebView my WebView =(WebView)findview byid(r . id . WebView);

mywebview . setwebviewclient(new MyWebViewClient());

此外,為了用戶的習慣,WebView需要表現得更像壹個瀏覽器,即需要能夠回滾歷史。

所以需要覆蓋系統的後退按鈕goBack,goForward可以向前向後瀏覽歷史頁面。

Java代碼

public boolean onKeyDown(int key code,KeyEvent event) {

if ((keyCode == KeyEvent。KEYCODE _ BACK)& amp;& ampmyWebView.canGoBack() {

my webview . go back();

返回true

}

返回super.onKeyDown(keyCode,event);

}

//在javascript中處理確認。

public boolean onJsConfirm(WebView視圖,字符串url,字符串消息,最終JsResult結果){

Builder Builder = new Builder(main activity . this);

builder . settitle(" confirm ");

builder.setMessage(消息);

builder . setpostivebutton(Android。R.string .好的,

新警報對話框。OnClickListener() {

public void onClick(dialog interface dialog,int which) {

result.confirm()。

}

});

builder . setnegativebutton(Android。取消,

新的對話界面。OnClickListener() {

public void onClick(dialog interface dialog,int which) {

result . cancel();

}

});

builder . setcancelable(false);

builder . create();

builder . show();

返回true

};

@覆蓋

//設置網頁加載的進度條。

public void onprogress changed(WebView view,int newProgress) {

MainActivity.this.getWindow()。setFeatureInt(窗口。FEATURE_PROGRESS,new PROGRESS * 100);

super.onProgressChanged(view,new progress);

}

//設置應用程序的標題。

公共void onReceivedTitle(WebView視圖,字符串標題){

MainActivity.this.setTitle(標題);

super.onReceivedTitle(視圖,標題);

}

});

●在Android中調試

通過JS代碼輸出日誌信息

javascript,javascript

Js代碼:console . log(" Hello World ");

日誌信息:控制臺:hello world/hello.html: 82

在WebChromeClient中實現onConsoleMesaage()回調方法,打印LogCat中的信息。

Java代碼復制代碼收集代碼

WebView my WebView =(WebView)findview byid(r . id . WebView);

my webview . setwebchromeclient(new WebChromeClient(){

public void onconsole message(String message,int lineNumber,String sourceID) {

Log.d("MyApplication ",message + " - From line "

+行號+ " of "

+sourceID);

}

});

Java代碼

WebView my WebView =(WebView)findview byid(r . id . WebView);

my webview . setwebchromeclient(new WebChromeClient(){

public boolean onconsole message(console message cm){

Log.d("MyApplication ",cm.message() + " - From line "

+ cm.lineNumber() + " of "

+cm . sourceid());

返回true

}

});

*ConsoleMessage還包括壹個MessageLevel,表示控制臺傳輸的信息類型。您可以使用messageLevel()查詢信息級別,以確定信息的嚴重性,然後使用適當的日誌方法或采取其他適當的措施。

Android中HTML 5本地存儲的應用

HTML5為客戶端存儲數據提供了兩種新方法:

LocalStorage沒有時間限制。

會話存儲是會話的數據存儲。

javascript,javascript

WebStorage的API:

//空存儲

local storage . clear();

//設置壹個鍵值

localStorage.setItem("yarin "," yangfengsheng ");

//獲取壹個鍵值

local storage . getitem(" yarin ");

//獲取具有指定下標的鍵的名稱(如Array)

local storage . key(0);

//返回“fresh”//刪除壹個鍵值。

local storage . remove item(" yarin ");

壹定要在設置裏打開。

setDomStorageEnabled(true)

在安卓操作。

//啟用數據庫

web settings . setdatabasenabled(true);

string dir = this . getapplicationcontext()。getDir("數據庫",上下文。MODE_PRIVATE)。getPath();

//設置數據庫路徑

web settings . setdatabasepath(dir);

//若要使用localStorage,必須將其打開。

web settings . setdomstorageenabled(true);

//擴展數據庫的容量(在WebChromeClinet中實現)

public void onExceededDatabaseQuota(字符串url,字符串databaseIdentifier,long currentQuota,

long estimatedSize,long totalUsedQuota,WebStorage。QuotaUpdater quotaUpdater) {

quotaupdater . update quota(estimated size * 2);

}

JS中的常規數據庫操作

函數initDatabase() {

嘗試{

如果(!window.openDatabase) {

警報(“您的瀏覽器不支持數據庫”);

}否則{

var shortName = ' YARINDB

var版本= ' 1.0 ';

var displayName = ' yarin db

var maxSize = 100000;//以字節表示

YARINDB = openDatabase(shortName,version,displayName,maxSize);

create tables();

select all();

}

} catch(e) {

if (e == 2) {

//版本不匹配。

console.log("無效的數據庫版本。");

}否則{

console.log("未知錯誤"+ e +"。");

}

返回;

}

}

函數createTables(){

YARINDB.transaction(

功能(交易){

transaction . execute SQL(' CREATE TABLE IF NOT EXISTS yarin(id INTEGER NOT NULL PRIMARY KEY,name TEXT NOT NULL,desc TEXT NOT NULL);',[],nullDataHandler,error handler);

}

);

insert data();

}

函數insertData(){

YARINDB.transaction(

功能(交易){

//頁面初始化時的起始數據

var data = ['1 ','雅林楊','我是雅林'];

transaction . execute SQL(" INSERT INTO yarin(id,name,desc)值(?, ?, ?)",[數據[0],數據[1],數據[2]]);

}

);

}

函數errorHandler(事務,錯誤){

if (error.code==1){

// DB表已經存在

}否則{

// Error是人類可讀的字符串。

console . log(‘哎呀。錯誤為“+error.message+”(代碼為“+error . Code+”));

}

返回false

}

函數nullDataHandler(){

console.log("SQL查詢成功");

}

函數selectAll(){

YARINDB.transaction(

功能(交易){

transaction . execute SQL(" SELECT * FROM yarin;",[],dataSelectHandler,error handler);

}

);

}

函數dataSelectHandler(事務,結果){

//處理結果

for(var I = 0;我& lt結果.行.長度;i++) {

var row = results . rows . item(I);

var new feature = new Object();

new feature . name = row[' name '];

new feature . decs = row[' desc '];

document.getElementByIdx_x_x_x("名稱")。innerHTML = " name:"+new feature . name;

document . getelementbyidx _ x _ x _ x(" desc ")。innerHTML = " desc:"+new feature . decs;

}

}

函數updateData(){

YARINDB.transaction(

功能(交易){

var data = ['楊風生','我是盛豐'];

transaction . execute SQL(" UPDATE yarin SET name =?,desc=?其中id = 1 ",[data[0],data[1]]);

}

);

select all();

}

函數ddelettables(){

YARINDB.transaction(

功能(交易){

transaction . execute SQL(" DROP TABLE yarin;",[],nullDataHandler,error handler);

}

);

console.log("表' page_settings '已被刪除。");

}

註意onLoad中的初始化。

函數initLocalStorage(){

if (window.localStorage) {

textarea . addevent listener(" keyup ",function() {

window . local storage[" value "]= this . value;

window.localStorage["time"] =新日期()。getTime();

},假);

}否則{

alert("此瀏覽器不支持本地存儲。");

}

}

window.onload = function() {

init database();

initLocalStorage();

}

HTML 5地理位置服務在Android中的應用

//啟用地理定位

web settings . setgeolocationenabled(true);

//設置定位的數據庫路徑。

web settings . setgeolocationdatabasepath(dir);

//配置權限(也在WebChromeClient中實現)

public void ongeolocationpermissions show prompt(字符串來源,

地理位置權限。回調回調){

callback.invoke(origin,true,false);

super . ongeolocationpermissions show prompt(origin,callback);

}

通過HTML5中的navigator.geolocation對象獲取地理位置信息。

常用的navigator.geolocation對象有以下三種方法:

javascript,javascript

//獲取當前的地理位置

navigator . geolocation . getcurrentposition(success _ callback _ function,error_callback_function,position_options)

//不斷獲取地理位置

navigator . geolocation . watch position(success _ callback _ function,error_callback_function,position_options)

//清除持續獲取地理位置事件。

navigator . geolocation . clear watch(watch _ position _ id)

其中success_callback_function是成功後處理的函數,error_callback_function是失敗後返回的處理函數,參數position_options是配置項。

//定位

函數get_location() {

if (navigator.geolocation) {

navigator . geolocation . getcurrentposition(show _ map,handle_error,{ enablehigaccuracy:false,maximumAge:1000,time out:15000 });

}否則{

alert("您的瀏覽器不支持HTML5地理定位");

}

}

  • 上一篇:DNF盜賊和亡靈巫師
  • 下一篇:媽媽與車主父親再婚的車禍是壹個謎。
  • copyright 2024吉日网官网