Skip to content

Commit e3065e1

Browse files
committed
修复issues79
1 parent f49a995 commit e3065e1

File tree

12 files changed

+325
-468
lines changed

12 files changed

+325
-468
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="com.leo">
4+
<uses-permission android:name="android.permission.INTERNET" />
45

56
<application
67
android:allowBackup="true"
Lines changed: 185 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,209 @@
11
package com.leo;
22

3+
import android.content.Context;
34
import android.content.Intent;
45
import android.databinding.DataBindingUtil;
6+
import android.net.Uri;
7+
import android.net.http.SslError;
8+
import android.os.Build;
59
import android.os.Bundle;
610
import android.support.annotation.Nullable;
711
import android.support.v7.app.AppCompatActivity;
12+
import android.view.KeyEvent;
813
import android.view.View;
14+
import android.webkit.JavascriptInterface;
15+
import android.webkit.SslErrorHandler;
16+
import android.webkit.WebChromeClient;
17+
import android.webkit.WebSettings;
18+
import android.webkit.WebView;
19+
import android.webkit.WebViewClient;
20+
import android.widget.Toast;
921

10-
import com.leo.databinding.ActivityWikiBinding;
22+
import com.leo.databinding.ActivityWikiWebBinding;
1123
import com.lihang.ShadowLayout;
1224

1325
/**
1426
* Created by leo
1527
* on 2020/8/5.
1628
*/
1729
public class WikiActivity extends AppCompatActivity {
18-
ActivityWikiBinding binding;
30+
ActivityWikiWebBinding binding;
31+
String urlStr;
1932

2033
@Override
2134
protected void onCreate(@Nullable Bundle savedInstanceState) {
2235
super.onCreate(savedInstanceState);
23-
binding = DataBindingUtil.setContentView(this, R.layout.activity_wiki);
36+
binding = DataBindingUtil.setContentView(this, R.layout.activity_wiki_web);
37+
38+
39+
// urlStr = "https://github.com/lihangleo2";
40+
urlStr = "https://github.com/lihangleo2/ShadowLayout/wiki";
41+
//声明WebSettings子类
42+
WebSettings webSettings = binding.webView.getSettings();
43+
44+
webSettings.setJavaScriptEnabled(true);
45+
//设置自适应屏幕,两者合用
46+
webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
47+
webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
48+
webSettings.setDomStorageEnabled(true);
49+
50+
//缩放操作
51+
webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
52+
webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
53+
webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
54+
55+
//其他细节操作
56+
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //开启缓存LOAD_CACHE_ELSE_NETWORK//LOAD_NO_CACHE关闭缓存
57+
webSettings.setAllowFileAccess(true); //设置可以访问文件
58+
webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
59+
webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
60+
webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
61+
62+
63+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
64+
//解决webView不加载图片
65+
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
66+
}
67+
68+
69+
////步骤3. 复写shouldOverrideUrlLoading()方法,使得打开网页时不调用系统浏览器, 而是在本WebView中显示
70+
binding.webView.setWebViewClient(new WebViewClient() {
71+
@Override
72+
public boolean shouldOverrideUrlLoading(WebView view, String url) {
73+
try {
74+
if (url.startsWith("http:") || url.startsWith("https:")) {
75+
view.loadUrl(url);
76+
return false;
77+
} else {
78+
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
79+
startActivity(intent);
80+
return true;
81+
}
82+
} catch (Exception e) {
83+
return true;
84+
}
85+
86+
}
87+
88+
@Override
89+
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
90+
91+
92+
if (binding.progressBar != null) {
93+
binding.progressBar.setVisibility(View.GONE);
94+
}
95+
96+
Toast.makeText(WikiActivity.this, "网页加载失败", Toast.LENGTH_SHORT).show();
97+
98+
}
99+
100+
101+
// onReceivedSslError
102+
103+
104+
@Override
105+
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
106+
107+
handler.proceed();
108+
}
109+
110+
//webView加载结束后的动作
111+
@Override
112+
public void onPageFinished(WebView view, String url) {
113+
//设定加载结束的操作
114+
if (binding.progressBar != null) {
115+
binding.progressBar.setVisibility(View.GONE);
116+
}
117+
118+
119+
}
120+
});
121+
122+
123+
binding.webView.setWebChromeClient(new WebChromeClient() {
124+
125+
@Override
126+
public void onProgressChanged(WebView view, int newProgress) {
127+
if (binding.progressBar.getVisibility() == View.GONE && newProgress != 100) {
128+
//点击webView内部,进度条可见
129+
binding.progressBar.setVisibility(View.VISIBLE);
130+
}
131+
132+
if (newProgress == 100 && binding.progressBar.getVisibility() == View.VISIBLE) {
133+
//bug:不走finish所以不能设置不可见
134+
binding.progressBar.setVisibility(View.GONE);
135+
}
136+
137+
138+
if (binding.progressBar != null) {
139+
binding.progressBar.setProgress(newProgress);
140+
}
141+
}
142+
});
143+
144+
145+
binding.webView.loadUrl(urlStr);
146+
//js互调相关
147+
binding.webView.addJavascriptInterface(new CrosswalkInterface(this), "JSbridge");
148+
149+
24150
binding.shadowLayoutBarLeft.setOnClickListener(v -> {
25-
finish();
151+
if (binding.webView.canGoBack()) {
152+
binding.webView.goBack();
153+
} else {
154+
finish();
155+
}
26156
});
157+
27158
}
159+
160+
161+
@Override
162+
public boolean onKeyDown(int keyCode, KeyEvent event) {
163+
if (keyCode == KeyEvent.KEYCODE_BACK && binding.webView.canGoBack()) {
164+
binding.webView.goBack();// 返回前一个页面
165+
return true;
166+
}
167+
return super.onKeyDown(keyCode, event);
168+
}
169+
170+
171+
@Override
172+
protected void onResume() {
173+
super.onResume();
174+
if (binding.webView != null) {
175+
binding.webView.onResume();
176+
}
177+
}
178+
179+
@Override
180+
protected void onPause() {
181+
super.onPause();
182+
if (binding.webView != null) {
183+
binding.webView.onPause();
184+
}
185+
}
186+
187+
@Override
188+
protected void onDestroy() {
189+
super.onDestroy();
190+
if (binding.webView != null) {
191+
binding.webView.destroy();
192+
}
193+
}
194+
195+
public class CrosswalkInterface {
196+
Context context;
197+
198+
public CrosswalkInterface(Context context) {
199+
this.context = context;
200+
}
201+
202+
@JavascriptInterface
203+
public void exit() {
204+
finish();
205+
}
206+
}
207+
208+
28209
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item android:id="@android:id/progress">
4+
<clip>
5+
<shape>
6+
<corners android:radius="0dip" />
7+
<gradient
8+
android:endColor="#165CBC"
9+
android:startColor="#85B0E9" />
10+
</shape>
11+
</clip>
12+
</item>
13+
</layer-list>

app/src/main/res/layout/activity_main.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
app:hl_shadowHiddenLeft="true"
2424
app:hl_shadowHiddenRight="true"
2525
app:hl_shadowHiddenTop="true"
26-
app:hl_shadowLimit="5dp"
26+
app:hl_shadowLimit="10dp"
2727
>
2828

2929
<TextView
@@ -50,7 +50,7 @@
5050
app:hl_layoutBackground="#fff"
5151
app:hl_layoutBackground_true="#ff0000"
5252
app:hl_shadowColor="#2a000000"
53-
app:hl_shadowLimit="7dp"
53+
app:hl_shadowLimit="14dp"
5454
app:hl_shapeMode="ripple">
5555

5656

@@ -100,7 +100,7 @@
100100
app:hl_endColor="#fff"
101101
app:hl_layoutBackground_true="#ff0000"
102102
app:hl_shadowColor="#4D0E5BE8"
103-
app:hl_shadowLimit="7dp"
103+
app:hl_shadowLimit="14dp"
104104
app:hl_shapeMode="pressed"
105105
app:hl_startColor="#EE5F8F">
106106

app/src/main/res/layout/activity_shadow.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
app:hl_shadowHiddenLeft="true"
2222
app:hl_shadowHiddenRight="true"
2323
app:hl_shadowHiddenTop="true"
24-
app:hl_shadowLimit="5dp">
24+
app:hl_shadowLimit="10dp">
2525

2626

2727
<RelativeLayout
@@ -83,7 +83,7 @@
8383
android:layout_marginTop="10dp"
8484
app:hl_cornerRadius="10dp"
8585
app:hl_shadowColor="#2a000000"
86-
app:hl_shadowLimit="5dp"
86+
app:hl_shadowLimit="10dp"
8787
>
8888

8989
<TextView
@@ -104,7 +104,7 @@
104104
android:layout_marginTop="10dp"
105105
app:hl_cornerRadius="18dp"
106106
app:hl_shadowColor="#29000000"
107-
app:hl_shadowLimit="5dp"
107+
app:hl_shadowLimit="10dp"
108108
>
109109

110110
<TextView
@@ -127,7 +127,7 @@
127127
app:hl_cornerRadius="18dp"
128128
app:hl_cornerRadius_leftTop="0dp"
129129
app:hl_shadowColor="#29000000"
130-
app:hl_shadowLimit="5dp"
130+
app:hl_shadowLimit="10dp"
131131
>
132132

133133
<TextView
@@ -150,7 +150,7 @@
150150
android:layout_marginTop="10dp"
151151
app:hl_cornerRadius="5dp"
152152
app:hl_shadowColor="#2aff0000"
153-
app:hl_shadowLimit="5dp"
153+
app:hl_shadowLimit="10dp"
154154
>
155155

156156
<TextView
@@ -172,7 +172,7 @@
172172
android:layout_marginTop="10dp"
173173
app:hl_cornerRadius="18dp"
174174
app:hl_shadowColor="#2a0d00ff"
175-
app:hl_shadowLimit="5dp"
175+
app:hl_shadowLimit="10dp"
176176
>
177177

178178
<TextView
@@ -193,7 +193,7 @@
193193
android:layout_marginTop="10dp"
194194
app:hl_cornerRadius="18dp"
195195
app:hl_shadowColor="#5500ff11"
196-
app:hl_shadowLimit="10dp"
196+
app:hl_shadowLimit="20dp"
197197
>
198198

199199
<TextView
@@ -214,7 +214,7 @@
214214
android:layout_marginTop="10dp"
215215
app:hl_cornerRadius="18dp"
216216
app:hl_shadowColor="#5500bfff"
217-
app:hl_shadowLimit="10dp"
217+
app:hl_shadowLimit="20dp"
218218
app:hl_shadowOffsetX="5dp"
219219
>
220220

@@ -236,7 +236,7 @@
236236
android:layout_marginTop="10dp"
237237
app:hl_cornerRadius="18dp"
238238
app:hl_shadowColor="#55ff00d5"
239-
app:hl_shadowLimit="10dp"
239+
app:hl_shadowLimit="20dp"
240240
app:hl_shadowOffsetY="5dp"
241241
>
242242

@@ -259,7 +259,7 @@
259259
app:hl_cornerRadius="18dp"
260260
app:hl_shadowColor="#55ff8c00"
261261
app:hl_shadowHiddenTop="true"
262-
app:hl_shadowLimit="10dp">
262+
app:hl_shadowLimit="20dp">
263263

264264
<TextView
265265
android:layout_width="wrap_content"

0 commit comments

Comments
 (0)