前言
最近公司的项目加入天气模块,需要实现下面的效果。
然后根据自己的构想实现了下面的效果。
本次主要介绍 WebView 和前端的一些交互,前端调用 Java 方法的几种方法,顺便会介绍 Java 调用 JS 的方式。
按如下的顺序依次讲解
1.前端需要注意的几个地方
2.Java 调用 JS 函数,以及传递参数给 JS 函数
3.JS 调用 Java 代码不需要 Java 函数的返回值的两种方式
4.JS 调用 Java 代码需要获取 Java 函数的返回值的两种方式
在和客户端交互的过程中,往往都有跳转的,在Web开发中,默认的href属性通常是#,然后通过获取标签绑定动作触发事件,这里会出现问题。
1  | <a href="#">click here</a>  | 
这个时候,会发现,当客户端第一次点击的时候,调用时正常的,当客户端再次点击的时候,就会调用客户端的方法两次,每点击依次,调用客户端的方法次数就会 +1。
解决方案:
1  | <a href="javascript:void(0);">click here</a>  | 
博客将按照下面的步骤介绍Volley的重新封装:
1.OkHttp3的关于Volley的HttpStack实现
2.HttpRequest的实现和HttpListener回调监听的封装
3.Volley原始的Request的Wrap
4.各种方式的请求的重新实现
5.统一请求的实现
6.使用
所需依赖:
1  | compile 'com.android.volley:volley:1.0.0'  | 
这个是应该是比较简单的,关于OkHttp3Stack的实现在github上面有实现,本博客里面的实现在我的Github上面。
由于代码比较长,而且这个也不是这篇博客的重点,大家需要的话可以去我的Github查看。
关于自定义属性,我们用的比较多的时候就是在自定义view的时候了,其实自定义属性还有一些其余的妙用。这里讲解一个利用自定义的属性为应用程序全局的替换背景的例子。
可能我们在使用ToolBar的时候见过很多次的这种使用方式了。
1  | <android.support.v7.widget.Toolbar  | 
在确定ToolBar的高度和背景色的时候,并没有在xml文件里面去写死,而是读取的Google自定义的属性值。
我们会好奇,这样怎么就能获取到值呢,这个属性是在哪里有定义的呢,关于怎么拿到值是另外一个问题了,现在来说一下这个值是在哪里定义的,并且在哪里赋的初始值的。
也可以称之为资源包名,这个包名和真正安装到用户手机上面的apk的包名可能会不是同一个,这个包名仅用来命名资源类的包。
1  | <manifest xmlns:android="http://schemas.android.com/apk/res/android"  | 
对应的module的R.java文件的package即:
1  | package com.mmc.plat.pay;  | 
市场上面唯一的标识即是这个,这个一般我们在项目的build.gradle文件里面配置。
1  | android {  | 
那如果我们没有配置的情况下,会默认为AndroidManifest文件中的package了。