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地理定位");
}
}