ogress_bar);

webView.setWebChromeClient(new WebChromeClient() {

@Override

public void onProgressChanged(WebView view, int newProgress) {

if (newProgress != 100) {

progressBar.setVisibility(View.VISIBLE);

progressBar.setProgress(newProgress);

} else {

progressBar.setVisibility(View.GONE);

}

}

});

“`

第三步:處理網站中的鏈接

當用戶在WebView中點擊網頁中的鏈接時,WebView默認會打開系統瀏覽器來顯示該鏈接內容。但在APP中,我們希望用戶始終在APP內部瀏覽網頁,因此需要攔截WebView中的鏈接。在WebView中添加以下代碼來實現這個功能:

“`java

webView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

});

“`

這段代碼中的shouldOverrideUrlLoading()方法會在用戶點擊鏈接時被調用,將目標鏈接加載到當前的WebView中。

第四步:添加上下文菜單

與網頁相比,APP的用戶體驗更加重視交互和操作,因此我們可以為WebView添加上下文菜單,以方便用戶進行一些常用操作,如復制鏈接或網頁內容。代碼如下:

“`java

webView.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

HitTestResult result = webView.getHitTestResult();

if (result.getType() == HitTestResult.SRC_ANCHOR_TYPE) {

final String url = result.getExtra();

AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)

.setMessage(url)

.setPositiveButton(“復制鏈接”, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

cm.setPrimaryClip(ClipData.newPlainText(null, url));

}

網站做app })

.setNegativeButton(“取消”, null)

.create();

dialog.show();

return true;

}

return false;

}

});

“`

這段代碼中的onLongClick()方法會在用戶長按WebView中的內容時被觸發,顯示一個對話框,其中列出了一些常用操作,如“復制鏈接”。

第五步:處理網站中的圖片等資源

有些網站中可能會包含一些圖片、視頻等資源,而WebView默認情況下并不會自動下載這些資源,需要我們自己來處理。

可以使用WebViewClient中的onPageFinished()方法來獲取網頁中的所有資源,并將其下載到本地存儲中。代碼如下:

“`java

webView.setWebViewClient(new WebViewClient() {

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

new DownloadTask().execute(url);

}

});

class DownloadTask extends AsyncTask {

@Override

protected Void doInBackground(String… urls) {

try {

String url = urls[0];

Document doc = Jsoup.connect(url).get();

Elements elements = doc.getElementsByTag(“img”);

for (Element element : elements) {

String imgUrl = element.absUrl(“src”);

if (!imgUrl.startsWith(“http”)) {

continue;

}

String fileName = Paths.get(imgUrl).getFileName().toString();

File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), fileName);

URLConnection conn = new URL(imgUrl).openConnection();

InputStream in = conn.getInputStream();

OutputStream out = new FileOutputStream(file);

byte[] buffer = new byte[4096];

int len;

while ((len = in.read(buffer)) > 0) {

out.write(buffer, 0, len);

}

out.close();

in.close();

}

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

}

“`

這段代碼中使用了Jsoup庫來解析網頁內容,獲取其中的所有元素,并下載其中的圖片到本地存儲中。

最后,我們可以為APP添加一些其他的功能,如分享、收藏、設置等等,來增強APP的可用性和用戶體驗。

綜上所述,將一個網站做成APP可以通過WebView來實現。我們可以通過一系列的編程操作,實現網站內容的加載、鏈接的攔截、上下文菜單的添加、資源的下載等功能,從而讓用戶可以方便地在APP中瀏覽目標網站。

未經允許不得轉載:智電網絡 NET » 怎么將一個網站做成app?

相關推薦