前言
Android 写一个地图界面
👀效果图
在一个活动中,进活动一瞬间打开一个网页版地图(不用自己写浏览器), 地图可缩放,可以拖动,可以找位置,可以反查坐标,大家可以在此基础上再嵌入好玩的功能
提示:以下是本篇文章正文内容,下面案例可供参考,代码注释多
一、不用浏览器可以?
不用担心,Android 早就已经考虑到了这种需求,并提供了一个 WebView 控件,借助它我们就可以在自己的应用程序里嵌入一个浏览器,从而非常轻松地展示各种各样的网页
二、步骤
1.新建一个空白活动
然后会自动生成一个布局文件,按图找到Webview拖入
起名 android:id="@+id/map"
2.写入代码
1.MyWev_view .Activity主要的代码
package com.example.secure_majia;//这是我的项目名称
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
//以上都是包
public class MyWev_view extends AppCompatActivity {
private WebView temp_webView;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_wev_view);
initWebView();
temp_webView.loadUrl("http://api.map.baidu.com/lbsapi/getpoint/index.html");//你想要访问什么网页你就写什么
}
//初始化浏览器
@SuppressLint("SetJavaScriptEnabled")
private void initWebView() {
temp_webView = (WebView) findViewById(R.id.map);
WebSettings webSettings = temp_webView.getSettings();
temp_webView.setVerticalScrollBarEnabled(false);
webSettings.setJavaScriptEnabled(true); // 设置支持javascript脚本
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setUseWideViewPort(true);//关键点
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setDisplayZoomControls(false);
webSettings.setAllowFileAccess(true); // 允许访问文件
//设置JS支持
//webSettings.setJavaScriptEnabled(true);
//设置支持缩放变焦
webSettings.setBuiltInZoomControls(false);
//支持屏幕缩放
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
//设置是否允许JS打开新窗口
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
// 修复一些机型webview无法点击
temp_webView.requestFocus(View.FOCUS_DOWN);
temp_webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("http:") || url.startsWith("https:") ) {
view.loadUrl(url);
return false;
}else{
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
});
temp_webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String
url) {
view.loadUrl(url); // 根据传入的参数再去加载新的网页
return true; // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器
}
});
}
}
2.修改AndroidManifest.xml代码
🤳一点要插入这一句话,这是用于支持网络的,不然不能上网
<uses-permission android:name="android.permission.INTERNET" />
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.secure_majia">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/icon" //app图标
android:label="xxx" //这是app名字
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
android:usesCleartextTraffic="true"
tools:targetApi="m">
<activity//注册该活动
android:name=".MyWev_view"
android:label="@string/title_activity_my_wev_view"
android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
结尾
至此基本大功告成了
在这个案例中我只写了两个页面,一个MainActivity和web页面,对于第一个页面自动跳转感兴趣的同学可以看我的另外一篇文章