Materail Design学习跟随demo解读(三)
2016-11-12 23:10
357 查看
接着上篇Materail Design学习跟随demo解读(二)继续,似乎这是这个demo的最后一个部分,也可能是对于我来说最难的部分,毕竟我不懂H5,也在业余学习HTML CSS,多学总是好的。。
这个activity没有xml界面
,整个就是一个webview,对webview进行了设置,设置完成,调用setContent方法添加到这个activity中,这部分代码我算是能看懂的,关于
这个activity没有xml界面
package com.steven.materialdesigncomplex; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; import android.util.Log; import android.webkit.JavascriptInterface; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; import java.util.Map; import java.util.TreeMap; public class H5Activity extends Activity { //上下文 private Context mContext = this; //日志标志 private static final String TAG = "H5Activity"; //显示h5的webview private WebView webView_h5; //服务器地址 public static final String BASE_URL = "http://123.57.44.15:8085/webblue/"; // 考试试卷 public static final String EXAM_PAPER_URL = "webblue/testQuestionsAction_findTestQuestionsByPaper.action?paperNo=";// 试卷编号:20140608001 public static final int EXAM_TIME = 2700; // 提交考试试卷 public static final String EXAM_SUBMIT_URL = "webblue/testScoresAction_saveScores.action?"; // private WebSettings webSettings = null; // private Handler handler = new Handler(); // private List<Map<String, String>> listResult = null; // private String paperNo = "20140608001"; // private String userid = "123"; // private String paperTitle = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //创建一个webview用于显示网页 webView_h5 = new WebView(this); //webView_h5 = (WebView) findViewById(R.id.webView_h5); // 设置WebView背景颜色 //webView_h5.setBackgroundColor(Color.rgb(255, 255, 0)); //设置WebView的一些缩放功能点 webView_h5.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webView_h5.setHorizontalScrollBarEnabled(false); //设置WebView可触摸放大缩小 webView_h5.getSettings().setSupportZoom(true); webView_h5.getSettings().setBuiltInZoomControls(true); //WebView双击变大,再双击后变小,当手动放大后,双击可以恢复到原始大小 webView_h5.getSettings().setUseWideViewPort(true); // 设置WebView初始化尺寸,参数为百分比 webView_h5.setInitialScale(100); // 获取WebSettings对象 webSettings = webView_h5.getSettings(); // 设置支持访问文件 webSettings.setAllowFileAccess(true); //允许JS执行 webView_h5.getSettings().setJavaScriptEnabled(true); webView_h5.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder builder = new AlertDialog.Builder( H5Activity.this); builder.setIcon(R.mipmap.ic_launcher); builder.setTitle("提示:"); builder.setMessage(message); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.cancel(); } }); builder.show(); return true; } }); // 点击超链接后不弹出浏览器窗口,而在WebView控件中加载URL,在app自身打开网页,而不是跳转到浏览器 webView_h5.setWebViewClient(new WebViewClient() { @Override // 目标网页在当前WebView中显示,不会打开系统浏览器来加载目标网页 public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // 网页开始加载时,设置图片阻塞 super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { // 网页加载完毕后,关闭图片阻塞 super.onPageFinished(view, url); webSettings.setBlockNetworkImage(false); } }); // 将一个Java对象绑定到一个Javascript对象中。 webView_h5.addJavascriptInterface(new MyJavascriptInterface(), "myJsInterface"); // 阻止网络图片加載 webView_h5.getSettings().setBlockNetworkImage(true); //加载“首页” webView_h5.loadUrl("file:///android_asset/yuzhi/index.html"); /*一系列设置完成,显示在界面上*/ setContentView(webView_h5); }
,整个就是一个webview,对webview进行了设置,设置完成,调用setContent方法添加到这个activity中,这部分代码我算是能看懂的,关于
MyJavascriptInterface里面的代码,总览一遍决定放到以后研究
相关文章推荐
- Material Design学习跟随demo解读(一)
- Material Design学习跟随demo解读(二)
- MaterailDesign风格的日历,MaterailCalendarView
- Materail Design 入门(三)——FloatingActionButton和Snackbar
- cocos2d-x 2.X demo学习笔记 9 ----MotionStreakTest 跟随条纹
- 用Materail Design设计实现悬浮的Tablayout
- Materail Design 入门(十)—— RecyclerView的使用(二)万能分隔线
- Materail Design 入门(六)—— TabLayout之标题中添加自定义View(2)
- Materail Design 入门(六)—— TabLayout之使用介绍(1)
- Materail Design 入门(六)—— TabLayout之设置自定义指示器宽度(3)
- Materail Design 入门(五)—— 使用DrawerLayout实现仿qq6.0的侧滑菜单功能
- TextInputLayout 完全解析 [Materail Design 1]
- Materail Design 入门(四)——Toolbar的使用方法(2)
- Materail Design 入门(八)——CollapsingToolbarLayout的使用方法
- Materail Design 入门(十)—— RecyclerView的使用(一)
- Materail Design 入门(四)——Toolbar的使用方法(1)
- WPF MATERAIL DESIGN TOOKIT
- 《js事件探秘》学习——鼠标跟随事件demo
- Materail Design 入门(九)—— NavigationView的使用
- Materail Design 入门(七)——AppBarLayout的使用方法