安卓(android) html5开发与最佳实践(上)
来源:互联网 发布:需要买车吗 知乎 编辑:程序博客网 时间:2024/05/19 08:40
安卓(android) html5开发与最佳实践(上)
安卓(android) html5开发与最佳实践(下)
首先得具备一定html/css/javascript知识,如果页面不是由你自己写,而是有美女前端工程师帮忙,那就随便了解一点点即可
下面我们开始:
新建一个页面
首先加入这些常用meta标签,这里要重点加入的一个就是viewport
viewport的属性如下:
<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] " />我们一般这么写就行了
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
target-densitydpi在安卓版本19被标记为过时了
如果需要适配则可以使用css media特性
比如可以为不同density写不同的css
可以这样
<link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 1.5)" href="hdpi.css" /><link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 1.0)" href="mdpi.css" /><link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio: 0.75)" href="ldpi.css" />也可以这样
#header { background:url(medium-density-image.png);}@media screen and (-webkit-device-pixel-ratio: 1.5) { /* CSS for high-density screens */ #header { background:url(high-density-image.png); }}@media screen and (-webkit-device-pixel-ratio: 0.75) { /* CSS for low-density screens */ #header { background:url(low-density-image.png); }}
像素比也可以通过js获得if (window.devicePixelRatio == 1.5) { alert("hdpi screen");} else if (window.devicePixelRatio == 0.75) { alert("ldpi screen");}其他都是html那些东西了,代码慢慢写,样式慢慢调,推荐用火狐浏览器调试
页面写完,安卓客户端当然也要写
客户端要维护的就是一个webview,超简单
webview自然是在xml里定义好
让后就是一些常见设置了
比如js调用java代码
写一个类
public class WebAppInterface { Context mContext; WebAppInterface(Context c) { mContext = c; } /** Show a toast*/ @JavascriptInterface//这个4.2版本的api,4.2以下的手机貌似写了也没事 public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); }}
然后
WebView webView = (WebView) findViewById(R.id.webview);webView.addJavascriptInterface(new WebAppInterface(this), "Web");//添加js对象js调用时如下就可以
<script type="text/javascript"> function showAndroidToast(toast) { Web.showToast(toast); }</script>现在我们还要做一件事,避免运行程序后调用手机浏览器打开网页,而不是自己的app跳转
private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading
(WebView view, String url) { if (Uri.parse(url).getHost().equals("www.example.com")) { // 这里只有内部网站才让app跳 return false; } // 否则调用浏览器打开 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; }}
上面可以起到防盗链的作用,当然你的设置进来:WebView myWebView = (WebView) findViewById(R.id.webview);myWebView.setWebViewClient
(new MyWebViewClient());
在Activity后退事件中最好加上webview的历史后退public booleanwebView也可以debugonKeyDown
(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack
()) { myWebView.goBack
(); return true; } return super.onKeyDown(keyCode, event);}
在js里面通过console.log("str");来输出到控制台,这个可以在浏览器的控制台上看到,在app里面可以这样来做也可以看到log
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; }});
0 0
- 安卓(android) html5开发与最佳实践(上)
- 安卓(android) html5开发与最佳实践(下)
- 【安卓开发】最佳实践之一:安卓开发篇
- 【安卓开发】最佳实践之一:安卓开发篇
- Android开发最佳实践
- Android开发最佳实践
- Android开发最佳实践
- Android 开发最佳实践
- Android 开发最佳实践
- Android 开发最佳实践
- Android 开发最佳实践
- Android开发最佳实践
- Android开发最佳实践
- Android 开发最佳实践
- Android开发最佳实践
- Android开发最佳实践
- Android 开发最佳实践
- Android 开发最佳实践
- Looper和Handler的分析
- KVO绑定
- ubuntu12.04中使用gnome-classic经典桌面 putty & vnc实现远程登录linux(有图有真相)
- 【java】enum定义枚举类 (jdk1.5 之后的新特性)
- 向指定URL发送POST、GET请求
- 安卓(android) html5开发与最佳实践(上)
- VS调试_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));崩溃原因及解决方法
- iOS 拨打电话三种方式总结
- ubuntu下启动mysql
- 编码乱码问题
- IT技术人才的出路
- 通过IIS7代理Tomcat服务
- mysqldump --master-data
- 【java】枚举类实现接口