前言
最近公司的项目加入天气模块,需要实现下面的效果。
然后根据自己的构想实现了下面的效果。
本次主要介绍 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了。